服务器端问题保存使用requests.POST上载的文件

时间:2013-01-28 14:43:24

标签: django python-requests

下面是我在某个服务器上传文件的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,所以没关系。 我的问题是,在服务器端,如何保存此文件? 我可以访问&#39; name&#39;通过这个词:

request.POST.get('name')

我可以访问&#39;文件&#39;同样但我无法保存它。我正在尝试这个:

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">)

但我遇到了同样的例外。

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

3 个答案:

答案 0 :(得分:2)

文件不在request.POST中,它们位于request.FILES

但您可能想阅读the file uploads documentation

答案 1 :(得分:0)

尝试以下方法,而不是按块编写块:

dest.write(ufile)

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

答案 2 :(得分:0)

有同样的问题.. 你应该删除&#34; Content-type&#34;来自请求标题,您的文件将显示在request.FILES中,然后您就可以使用<TemporaryUploadedFile>

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