无法手动将图像保存在磁盘上(Nginx、Django)
Cannot manualy save image on disk (Nginx, Django)
我在从表单自定义上传视图时遇到问题。当我尝试 将 保存到 /pathto/static/media/temp/
时,问题就开始了。 Django 设置 MEDIA_ROOT=/pathto/static/media
、STATIC_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
应该有帮助
我在从表单自定义上传视图时遇到问题。当我尝试 将 保存到 /pathto/static/media/temp/
时,问题就开始了。 Django 设置 MEDIA_ROOT=/pathto/static/media
、STATIC_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
应该有帮助