我正在尝试通过 django 表单上传文件,然后将其发送到 API。
这是编码功能:
#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(body)”时,它抱怨“'utf8'编解码器无法解码位置 0 的字节 0xff:无效的起始字节”。
完全相同的一段代码可以在命令行中完美运行,但 requestFile 实际上是文件的路径,而我在读取内容之前正在执行 open(requestFile, 'rb') 。
我无法为我的生活弄清楚下一步该做什么。在过去的 10 个小时左右,我一直在谷歌上寻找答案。