不能在django上使用“image.save”

时间:2010-04-19 02:10:04

标签: django upload

我的错误是:

IOError at /mytest/photo/upload/

[Errno 2] No such file or directory: u'/mytest/photo/upload/2.png'

我的观点是:

UPLOAD_URL = '/mytest/photo/upload/'

def upload(request):
    buf = request.FILES.get('photo', None)
    print buf
    if buf:
        #data = buf.read()
        #f = StringIO.StringIO(data)
        image = Image.open(buf)
        #image = image.convert('RGB')
        name = '%s%s' % (UPLOAD_URL, buf.name)
        image.save(file(name, 'wb'), 'PNG')
        return HttpResponse('ok')
    return HttpResponse('no')

我的urls.py是:

urlpatterns = patterns('mytest.views',
    url(r'^photo/upload/$','upload',name="")
)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您必须指定要保存文件的本地路径。 UPLOAD_URL是视图的路径,而不是目录。

将变量UPLOAD_PATH命名为上传的完整路径

然后执行以下操作:

UPLOAD_PATH = '/path/to/uploads/user'
if not os.path.isdir(UPLOAD_PATH):
    os.mkdir(UPLOAD_PATH)
file_path = os.path.join(UPLOAD_PATH, filename)
# security check
if os.path.abspath(file_path ).startswith(UPLOAD_PATH):
    image.save(file(file_path , 'wb'), 'PNG')