python - Django中PILsave图片,[Errno 2] No such file or directory
迷茫
迷茫 2017-04-18 10:10:26
[Python讨论组]

views.py的代码如下:

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
from PIL import Image

def show(request):
    d_content={}
    if request.method == "POST":
        reqfiles=request.FILES
        if len(request.FILES) > 0:
            reqfile=request.FILES['picfile']
            img=Image.open(reqfile)
            img.thumbnail((500,500),Image.ANTIALIAS)
            img.save('imgupload/static/ori_img.jpg','jpeg')
            d_content['ori_img']='ori_img.jpg'
            d_content['print']='ok'

    return render(request,'imgupload/showimg.html',d_content)

图1:本机测试正常,没问题。上传服务器才出问题


图2:同样代码,服务器上传图片后,出错

提示IOError,No such file or directory

图3:Django出错页面下面的debug可以看到,是在img.save的使用,调用open()出错了


本机开发环境是:mac系统,python2.7,Django1.10
开发环境服务器是CentOS6.5,python2.7,Django1.10,httpd2.4

排查错误

  • 在本机运行是无错的,python代码应该没问题,如图1.

  • 服务器Django环境没问题,其他页面都ok,只有这里报错

  • 是不是Linux文件权限问题?把服务器的mysite文件夹都chmod -R 777 没有效果,还是出错

  • 在服务器控制台直接python,然后import PIL,Image.open()然后再save一个图片,也是没问题的。


请教如何解决该问题?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
PHPz

纠结了好久
反复看过官方文档后,终于找到答案了

原来

  • 在本地测试的时候,runserver会搜索各个app中的static,所以本机测试是没问题的。

  • 但是部署时,是不生效的,必须自己指定static文件夹。

然后在httpd的conf中,设置别名

Alias /static/ /root/workplace/mysite/static/

就可以正常访问了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号