问题描述
我是curl
和pycurl
的新手。我想提供一种语言的值和多个文件到flask以通过pycurl进行测试。但是,flask函数不接受pycurl的语言,而是保留为None类型。谁能告诉我是否需要任何更正?我的代码如下:
我对单个文件有以下示例curl代码
curl --location --request POST '0.0.0.0:5000/' --form 'files[]=@/home/hostname/datafile/file.wav' --form 'lang=english'
我创建了一个python脚本,用于从文件夹中上传多个(所有)文件
import pycurl
import glob
import urllib
from urllib.parse import urlencode
#language
print('\nInput Language...\n')
crl = pycurl.Curl()
crl.setopt(crl.URL,'http://0.0.0.0:5000/')
data = {'lang':'english'}
l = urlencode(data)
crl.setopt(crl.POSTFIELDS,l)
# files
print('\nInput files...\n')
sourceFolder = '/home/poojaprabhu28/Documents/srcfolder'
src = sourceFolder + '/*'
sourceFiles = glob.glob(src)
for file in sourceFiles:
print(file)
crl.setopt(crl.HTTPPOST,[
('files[]',(
# upload the contents of this file
crl.FORM_FILE,file,)),])
crl.perform()
crl.close()
以下内容的HTML脚本是(仅插入html标签的定义)
<label>Choose a language:</label>
<select name="lang">
<option value="none">Choose an option</option>
<option value="english">English</option>
<option value="hindi">Hindi</option>
</select>
<br><br><label>Select Files to upload:</label> <input type="file" name="files[]" multiple="true" autocomplete="off" required>
烧瓶功能是:
UPLOAD_FOLDER = '/home/hostname/folder/uploads'
@app.route("/",methods=["POST","GET"])
def api():
if request.method == 'POST':
# check if the post request has the files part
if 'files[]' not in request.files:
flash('No file part')
return redirect(request.url)
language = request.form.get('lang')
print('language & its type : ')
print(language)
print(type(language))
audio_file = request.files.getlist('files[]')
for file in audio_file:
if file and allowed_file(file.filename):
original_filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'],original_filename))
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0')
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)