當使用plupload解決方案可能是像這樣的:在這種情況下
$("#uploader").plupload({
// General settings
runtimes : 'html5,flash,silverlight,html4',
url : "/uploads/",
// Maximum file size
max_file_size : '20mb',
chunk_size: '128kb',
// Specify what files to browse for
filters : [
{title : "Image files", extensions : "jpg,gif,png"},
],
// Enable ability to drag'n'drop files onto the widget (currently only HTML5 supports that)
dragdrop: true,
// Views to activate
views: {
list: true,
thumbs: true, // Show thumbs
active: 'thumbs'
},
// Flash settings
flash_swf_url : '/static/js/plupload-2.1.2/js/plupload/js/Moxie.swf',
// Silverlight settings
silverlight_xap_url : '/static/js/plupload-2.1.2/js/plupload/js/Moxie.xap'
});
而且你的燒瓶,Python代碼將類似於此:
from werkzeug import secure_filename
# Upload files
@app.route('/uploads/', methods=['POST'])
def results():
content = request.files['file'].read()
filename = secure_filename(request.values['name'])
with open(filename, 'ab+') as fp:
fp.write(content)
# send response with appropriate mime type header
return jsonify({
"name": filename,
"size": os.path.getsize(filename),
"url": 'uploads/' + filename,})
Plupload總是發送塊中完全相同的順序,從第一個到最後,所以你不要有求之類的東西來打擾。
我會補充說,在一些操作系統(在我的情況的Ubuntu 14.10),如果你打開(文件名,「A」),再求()將不會移動鼠標指針。追加將被強制執行,並且您將始終將傳入塊附加到文件末尾。 – Drachenfels 2015-03-24 17:37:44
@ petrus-jvrensburg您的回答非常適合我的需求,但我想知道,在兩個用戶同時上傳相同文件名的情況下,Flask如何不混合請求?你是否必須實現一個會話機制來識別這兩個用戶,或者是否有一些底層的http/nginx/uwsgi/flask屬性能夠將請求正確映射到相同的調用方法?感謝您的幫助! – 2015-06-19 19:15:22
@CyrilN。沒想過。但是,如果您已經爲您的應用程序設置了一些身份驗證,請使用該身份驗證。否則,您可以詢問'request.remote_addr'和'request.user_agent'以區分同時使用的用戶。 – 2015-06-20 20:33:11