如何使用python请求发布用户上传的文件?

时间:2015-11-18 17:38:18

标签: python django python-requests

我制作了一个ModelForm,允许用户上传图片。然后,我需要将整个表单作为多部分编码文件POST到后端应用程序;但是,当我发布它时,我没有包含该文件(尽管有效载荷中的所有字段都已通过)。使用python请求,我将文件字典设置为计算机上的测试图像。这来自我的views.py,有效。

url = 'https://...'
payload = {'first_name': first_name, ...}
files = {'screenshot': (screenshot.name, open('/Users/Ed/Documents/boots.jpg', 'rb'))}
req = requests.Request('POST', url, data=payload, files=files)
r = req.prepare()
s = requests.Session()
s.send(r)
return redirect('forms.views.thanks')

我觉得那个文件字典出了问题。我对Python或Django不太满意,所以如果答案很明显,请原谅我。

从我读到的内容来看,只要用户上传的文件大于2.5MB,我就可以从内存中引用上传,而不必从上传位置(一系列文件夹)获取按年,月,日嵌套。

再次,在查找解决方案之后,我认为screenshot.name将获取文件的文件名,而'screenshot'将引用文件本身。但那不起作用。以下这一行实际上欺骗了后端应用程序,使其相信那里有一个文件,但在测试时,它是一个空的jpg。

files = {'screenshot': (screenshot.name, screenshot, 'rb')}

任何人都可以告诉我我做错了什么吗?谢谢你的时间。

0 个答案:

没有答案