使用Django Rest Framework上传文件

7

你实际上尝试了什么?至少粘贴一些代码。 - Leonardo.Z
我已经尝试了上面链接中提供的相同代码.. 现在我无法进行测试.. 如何测试? - user2709881
@user2709881 请查看这篇博客文章 - mariodev
2个回答

13

Django REST框架中的文件上传与Django中的multipart/form形式上传文件相同。

您可以使用curl进行测试:

curl -X POST -H "Content-Type:multipart/form-data" -u {username}:{password} \
-F "{field_name}=@{filename};type=image/jpeg" http://{your api endpoint}

其他字段与Django中的普通表单字段相同。


1
如果你的curl同时具有JSON数据和图像,那又怎样呢? - Leonid
1
我认为你也可以将这些数据作为表单字段数据添加(在-F参数中)。由于我已经几个月没有使用REST框架了,所以我忘记了我当时做了什么。 - Zhe Li
Leonid:你得到了你的问题的答案吗?我们可以同时传输JSON数据和图像。 - vibhor
1
@Leonid,请查看这段代码 https://github.com/zheli/duego-photo-gallery。我记得我用这个成功了。你可以查看rest_api应用程序中上传测试的内容。 - Zhe Li
@Zhe,我无法让测试APIClient上传文件 - 我在.post调用中不断收到UnicodeDecodeError错误。你需要做些什么才能让它正常工作? - Robin Elvin
@RobinElvin 可能是因为这个项目很久以前就完成了,现在已经不再更新了。 - Zhe Li

2
这个回答已经很好了。除此之外,您可以添加一些参数以查看响应。以此为例:
curl -X PATCH --dump-header - -H "Content-Type:multipart/form-data" -u jorge:123456 -F "image=@/home/oscar/Pictures/dgnest/_MG_6445.JPG;type=image/jpeg" http://localhost:8000/api/project/3/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接