Django中的图像上传和操作

时间:2012-12-14 10:58:40

标签: python django amazon-web-services amazon-s3 django-uploads

我正在尝试上传图片,而不是创建它的缩略图,而不是将它们存储在S3中。文件上传后我首先将其上传到S3而不是尝试创建缩略图,但它不起作用,因为PIL无法识别图像。其次,如果我先创建缩略图而不是上传原始图像,我会得到EOF。

我认为Django只允许一次上传文件只使用一次....请告诉我一种方法....提前致谢

3 个答案:

答案 0 :(得分:2)

嗯,你需要对你的问题更加具体,但我们正在做同样的事情,工作流程如下:

1)你从request.FILES获取文件上传的文件句柄,并将其存储在本地文件系统的某个地方,这样你就不会在流上工作了 - 这就是我猜的会导致你的问题

2)你使用PIL(或者更好的是Pillow)来操纵FS上的图像,进行大小调整,缩略图等等。

3)您使用Boto(http://boto.cloudhackers.com/en/latest/)上传到S3,因为Boto无法处理AWS。

这很简单,效果很好

答案 1 :(得分:0)

编译时,您的PIL安装是否找到了正确的库。您可以尝试卸载它并使用pip重新安装。

查看编译输出的结尾,并有一节详细说明哪些库可用。

我花了很长时间试图找出为什么它没有发现我的jpeg,png / zip库,然后才意识到它在错误的位置。

在Debian中,我需要下载PIL / Pillow源并添加:

_add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")

到settings.py文件的'标准位置'部分 - 这是我的libjpeg.so安装到的目录

然后我需要运行

python setup.py install

并检查输出以确保它找到了正确的库

希望这有帮助

答案 2 :(得分:0)

我终于明白了。问题是它是一个上传文件存储到的流,因此每次我读取文件时它都会到达EOF。

唯一最好的方法是每次读取文件时寻找(0)。

在django中播放其他文件时也需要这样做。