2015-04-05 30 views
0

我有一个自定义上传视图的问题。该问题开始时,我试图保存/pathto/static/media/temp/。 Django设置MEDIA_ROOT=/pathto/static/media,STATIC_ROOT=/pathto/static。下面的代码:不能手动保存磁盘上的图像(Nginx,Django)

def upload_picture(request): 
    temp_file = request.FILES['picture'].read() 
    image_file = BytesIO(temp_file) 
    im = Image.open(image_file) 
    im.save('/pathto/static/media/temp/image.jpg') 
    ... 

权限/pathto/static/media/temp/目录

drwxrwxrwx 2 root root 4096 ... temp 

Nginx的配置

server { 
    location /media/ { 
     alias /pathto/static/media/; 
    } 
    location /static/ { 
     alias /pathto/static/; 
    } 
    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_pass http://127.0.0.1:9000; 
    } 
} 

肯定一切正常,如果DEBUG=True因为Django的开始提供文件服务。所以可能是Nginx配置的问题。
我该如何解决手动保存图像的问题?

+0

您是否硬编码了每个上传到完全相同文件的映像路径?在这种情况下,两次同时上传不起作用。 – 2015-04-05 12:28:32

+0

@KlausD。这不是问题,我只是简化了不注意不必要细节的代码。 – 2015-04-05 12:37:16

+0

是否存储了这些文件,而不是由nginx提供服务?请求是否返回200? – 2015-04-05 14:02:22

回答

1

如果我得到你的问题就在

im.save('/pathto/static/media/temp/image.jpg') 

解决的问题是:

在Ubuntu

sudo apt-get install libjpeg-dev 

然后

pip install -I pillow 

它应该帮助

相关问题