我正在使用Django 2.1.1,并希望使用以下curl命令上传文件:
curl -i -b cookies.txt -c cookies.txt -e https://neon/accounts/login/ \
--cert client.crt --key client.key -F "name=@afile" \
-H "X-CSRFToken: 9rQMPHGdPJHLVbSEmhwXLc1m9i1KIQVVenRPqP2JkqrldKgWX4GMahOET7pk5cnw" \
-H "Content-type: multipart/form-data" \
-X POST -F 'test=blaat' https://neon/test/
URL转到以下视图:
def test(request):
response = pprint.pformat(request.FILES, indent=4)
return HttpResponse(response)
卷曲的结果是:
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Thu, 22 Nov 2018 14:37:03 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 72
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=63072000; includeSubdomains
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
{ 'name': <InMemoryUploadedFile: afile (application/octet-stream)>}
所以我如何在Django的str变量中获取'afile'的内容...我尝试了request.FILES ['file']。chunks(),但实际上不知道我在尝试什么这里。还将内容写入服务器上的文件:不知道。最主要的是将其放入变量中,以便例如从该文件中解析JSON。
登录名,SSL证书和身份验证都可以正常工作。那不是问题。
答案 0 :(得分:1)
只需在文件上使用read
函数,然后使用适当的编码进行解码:
from io import BytesIO
data = request.FILES['name'].read()
data = data.decode('utf-8')