无法手动将图像保存在磁盘上(Nginx、Django)

Cannot manualy save image on disk (Nginx, Django)

我在从表单自定义上传视图时遇到问题。当我尝试 保存到 /pathto/static/media/temp/ 时,问题就开始了。 Django 设置 MEDIA_ROOT=/pathto/static/mediaSTATIC_ROOT=/pathto/static。这是代码:

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 配置的问题。
如何解决手动保存图片的问题?

如果我解决了你的问题

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

解决方法是:

在 Ubuntu

sudo apt-get install libjpeg-dev

然后

pip install -I pillow

应该有帮助