如何混合Django,Uploadify和S3Boto存储后端?

Dav*_*Kay 14 django amazon-s3 boto uploadify filefield

背景

我在Django上做了相当大的文件上传.文件大小一般为10MB-100MB.

我在Heroku上,我已经达到30秒的请求超时.

开始

为了达到极限,Heroku的建议是从浏览器直接上传到S3.

亚马逊通过向您展示如何编写HTML表单来执行上传来记录此文档.

由于我在使用Django,而不是手工编写HTML,我使用的是django-uploadify-s3(示例).这为我提供了一个SWF对象,用JS包装,执行实际的上传.

这部分工作正常!万岁!

问题

问题是在捆绑数据返回给我的Django模型在一个健全的方式.现在,数据作为一个简单的URL字符串返回,指向文件的位置.

但是,我以前使用django-storages的S3 Boto来管理我的所有文件FileFields,并以令人愉快的方式为后盾S3BotoStorageFile.

重申一下,S3 Boto在孤立方面工作得很好,上传它是孤立地工作,问题在于将两者结合在一起.

我的理解是,填充的唯一方法FileField是提供文件名和文件内容.当您将文件从浏览器上传到Django时,这没有问题,因为Django将文件内容放在缓冲区中并且可以随意使用它.但是,当像我这样直接进行S3上传时,Django只接收文件名和URL,而不是二进制数据,所以我无法正确填充FieldFile.

哭喊帮忙

任何人都知道将S3Boto的FileField与直接到S3上传结合使用的优雅方式?

另外,基于URL管理S3文件的最佳方法是什么?包括设置到期,密钥ID等.

非常感谢!

Joe*_*nez -1

我从未使用过 django,所以 ymmv :) 但为什么不只写一个字节来填充内容呢?这样,您仍然可以使用 FieldFile。