相关疑难解决方法(0)

如何在Django中通过PUT请求处理文件上传?

我正在实现一个REST风格的界面,并希望能够通过HTTP PUT请求创建(通过上传)文件.我想创建一个TemporaryUploadedFile或一个InMemoryUploadedFile,然后我可以传递给我现有的FileField.save()作为模型一部分的对象,从而存储文件.

我不太清楚如何处理文件上传部分.具体来说,这是一个put请求,我没有访问权限,request.FILES因为它在PUT请求中不存在.

所以,有些问题:

  • 我可以利用HttpRequest类中的现有功能,特别是处理文件上传的部分吗?我知道直接PUT不是多部分MIME请求,所以我不这么认为,但值得一提.
  • 如何推断出发送的mime类型?如果我做对了,PUT主体就是没有前奏的文件.因此,我是否要求用户在其标题中指定mime类型?
  • 如何将其扩展到大量数据?我不想把它全部读入内存,因为这是非常低效的.理想情况下,我会做什么TemporaryUploadFile和相关的代码 - 一次写一部分?

我已经看过这个代码示例,它将Django PUT作为POST请求处理.如果我做得对,它只会处理表格编码数据.这是REST,因此最好的解决方案是不假设表格编码数据将存在.但是,我很高兴听到有关使用mime(而不是multipart)的适当建议(但上传应该只包含一个文件).

Django 1.3是可以接受的.所以我可以用request.raw_post_datarequest.read()(或者其他一些更好的访问方法)做一些事情.有任何想法吗?

python django rest http-put django-1.3

18
推荐指数
1
解决办法
7006
查看次数

如何在django-tastypie上传带有POST请求的文件?

可能重复:
Django-tastypie:POST中文件上传的任何示例?

我目前正在对我的API执行cURL POST请求

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"username":"theusername", "api_key":"anapikey", "video_title":"a title", "video_description":"the description"}' http://localhost:8000/api/v1/video/ 
Run Code Online (Sandbox Code Playgroud)

但现在我需要能够将视频文件添加到上传中.我一直在寻找有关使用Tastypie上传文件的几个小时,我还没有想出一个坚实的回复.我需要添加Base64编码吗?如果是这样的话?在我通过POST请求上传文件后如何访问该文件?只是正常的request.FILES动作?我不是要将文件保存到数据库,只是获取文件的路径.

#Models.py
class Video(models.Model):
    video_uploader = models.ForeignKey(User)
    video_path = models.CharField(max_length=128)
    video_views = models.IntegerField(default=0)
    upload_date = models.DateTimeField(auto_now_add=True)
    video_description = models.CharField(max_length=860)
    video_title = models.SlugField()
Run Code Online (Sandbox Code Playgroud)

我对如何为Tastypie实现文件上传系统感到非常困惑,所以任何帮助都将非常感激.谢谢!

python django tastypie

3
推荐指数
1
解决办法
5533
查看次数

标签 统计

django ×2

python ×2

django-1.3 ×1

http-put ×1

rest ×1

tastypie ×1