我想通過Django的形式上傳文件,然後將其發送到API。Django傳輸上傳的文件
這裏的編碼功能:
#FYI, requestFile = request.FILES['file']
def EncodeFile(self, requestFile, fields = []):
BOUNDARY = '----------boundary------'
CRLF = '\r\n'
body = []
# Add the metadata about the upload first
for param in fields:
body.extend(
['--' + BOUNDARY,
'Content-Disposition: form-data; name="%s"' % param,
'',
fields[param],
])
fileContent = requestFile.read()
body.extend(
['--' + BOUNDARY,
'Content-Disposition: form-data; name="file"; filename="%s"'
% requestFile.name,
# The upload server determines the mime-type, no need to set it.
'Content-Type: ' + requestFile.content_type,
'',
fileContent,
])
# Finalize the form body
body.extend(['--' + BOUNDARY + '--', ''])
result = 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body)
return result
的問題是,當它達到「CRLF.join(型)」,報告說「‘utf-8’編解碼器在0位置無法解碼字節0xFF:無效開始字節「。
完全相同的一段代碼完美地從命令行運行,但requestFile實際上是一個文件的路徑,並且在讀取內容之前我打開了一個open(requestFile,'rb')。
我不能爲了我的生活找出下一步該做什麼。過去10個小時左右,我一直在搜索Google的答案。
在這個函數被調用之前,你是否在做文件流的任何事情?這聽起來像查找指針不在流的開始處。如果在頂部執行'requestFile.seek(0)'會發生什麼? –
在進入此功能之前,不對文件進行任何操作。 按照您的建議添加了requestFile.seek(0)。同樣的錯誤。 –