2012-11-03 46 views
3

我有一個表格(這恰好是在iframe)看起來像如下:爲什麼我的文件上傳(到Flask服務器)沒有出現在request.files中,而是出現在request.stream中?

<form id='picture-file-input-button' action='/post-picture' method='post' enctype='multipart/form-data' encoding='multipart/form-data'> 
    <button type='button' class='choose-picture-button'>Choose picture</button> 
    <input class='picture-file-input' type='file' /> 
</form> 

我使用$提交表單(「#圖片文件輸入鍵」)提交()這工作正常。該請求被髮送到正確的URL,我的Flask函數將其發送並將響應正確地發送回客戶端(iframe被重新加載)。

我沒有在Flask中做任何事情。它看起來像這樣:

@app.route('/post-picture', methods=['POST']) 
def post_provider_page_route(): 
    app.logger.debug(request) 
    app.logger.debug(request.data) 
    app.logger.debug(request.stream) 
    app.logger.debug(request.files) 
    app.logger.debug(request.form) 
    return render_template('iframe_template.html') 

的調試所有輸出空ImmutableMultiDict與request.stream除外其中。OUPUTS:

<werkzeug.wsgi.LimitedStream object at 0x9a7d30c> 

我希望看到在文件中request.files出現。爲什麼它不顯示在request.files中?

回答

6

request.files不會被填充,除非文件輸入元素具有名稱屬性集。 name屬性可以設置爲任何值。因此,對於上面的代碼的修復方法是:

<input class='picture-file-input' type='file' /> 

<input class='picture-file-input' type='file' name='picture' /> 
相關問題