如何在Django中获取curl上传文件的内容

时间:2018-11-22 14:46:13

标签: django file curl upload

我正在使用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证书和身份验证都可以正常工作。那不是问题。

1 个答案:

答案 0 :(得分:1)

只需在文件上使用read函数,然后使用适当的编码进行解码:


from io import BytesIO

data = request.FILES['name'].read()
data = data.decode('utf-8')