1

下面是我在特定服务器上上传文件的 python 片段代码:

import requests
url = "http://<my_url>"
files = {'file':open("<file to be uploaded>", "rb"), "name":"<name of the file>"}
r = requests.post(url, files=files)

状态码是200,所以没问题。我的问题是,在服务器端,我如何保存这个文件?我可以通过以下方式访问字典上的“名称”:

request.POST.get('name')

我也可以访问“文件”,但无法保存。我正在尝试这个:

ufile = request.POST.get('file')
dest = open("<file on the server side>", "wb+")
for chunk in ufile.chunks():
   dest.write(chunk)
dest.close()

但这不起作用,它会引发此异常:

unicode object has no attribute 'chunks'

我也试过:

ufile.save(<"filepath on the server side">)

但是我遇到了同样的异常。

希望得到任何反馈!提前致谢!

4

3 回答 3

2

文件不在request.POST,它们在request.FILES.

但您可能想阅读文件上传文档

于 2013-01-28T14:51:52.753 回答
0

尝试以下操作,而不是逐块写入:

dest.write(ufile)

ufile 对象是一个字符串,而不是文件句柄。

于 2013-01-28T14:46:41.750 回答
0

有同样的问题..您应该从请求标头中删除“Content-type”,您的文件将出现在 中request.FILES,然后您可以使用<TemporaryUploadedFile>

我认为这个答案与@jaysonpryde 无关,但也许会对其他人有所帮助.. :)

于 2015-02-19T09:21:13.020 回答