所以,我知道服務器代碼的作品,因爲這個網站目前正在生產和工作正常。另一方面,我開發了一個測試腳本來對API進行單元測試。我正在嘗試使用HTTP POST方法將PDF文件發送到服務器的nginx - > gunicorn - > flask應用程序環境。Python請求庫傳遞PDF到Django服務器
服務器以獲取附件:
@app.route('<ObjectId:_id>/attachments', methods=['POST'])
@csrf.exempt
@opportunity_owner_required
@auth.login_required
@nocache
def upload_attachment(_id):
upload = request.files.get('file')
if not upload:
abort(400, "Missing attached file.")
,我嘗試和PDF文件,傳遞到服務器:
def test_add_opportunity_attachment(self):
files = {'file': ("mozilla.pdf", open('%s/mozilla.pdf' % PATHTOFILE, 'rb'))}
headers = {'Content-Type': 'application/pdf', "enctype": "multipart/form-data", "Content-Disposition":"attachment;filename=mozilla.pdf"}
r=self.session.post(self.formatURL('/attachments'), headers=headers, files=files)
assert r.status_code == 200
但我總是得到狀態400
當使用ngrep來跟蹤輸出時,我確實看到似乎是通過網絡傳遞的PDF的編碼形式,但服務器看不到它。
請注意:由於其專有性質,部分信息丟失。但是測試功能中使用的所有功能都可以正常工作。 formatURL按預期的格式將其格式化,並且url確實匹配。
嘗試刪除您的自定義標題。我認爲通過設置那些你寫過的請求會爲你生成的正確的。 –
@ sigmavirus24試過,也沒有成功。 –
您的身份驗證已附加到我假設的會話中。 'formatURL'正在返回一個我希望的有效網址。我現在沒有時間查看燒瓶的文檔,但其他人可能會更好地瞭解文件屬性。由於'multipart/form-data'請求中可能有多個文件,你確定'.get('file')'是正確的嗎? –