使用bootcamp部署的网站无法上传头像

宅蓝三木 发布于 2015/01/21 20:45
阅读 291
收藏 0

@屈利春 你好,想跟你请教个问题:

用Bootcamp搭建的网站无法上传头像,选择完文件就直接redirect到原来的页面了,不知道你遇到过没有?

1. 我排除了权限问题, 网站家目录所属用户和所属组都是apache。而且原先没有media目录,在点击上传图片之后,家目录下有了media/profile_pictures目录,但并没有usrname_tmp.jpg。说明upload_picture已经被调用,而且不是权限问题。

def upload_picture(request):
    try:
        profile_pictures = django_settings.MEDIA_ROOT + '/profile_pictures/'
        if not os.path.exists(profile_pictures):
            os.makedirs(profile_pictures)
        f = request.FILES['picture']
        filename = profile_pictures + request.user.username + '_tmp.jpg'
        with open(filename, 'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)        
        im = Image.open(filename)
        width, height = im.size
        if width > 350:
            new_width = 350 
            new_height = (height * 350) / width
            new_size = new_width, new_height
            im.thumbnail(new_size, Image.ANTIALIAS)
            im.save(filename)
        return redirect('/settings/picture/?upload_picture=uploaded')
    except Exception, e:
        return redirect('/settings/picture/')



2. 我在你部署的网站上测过,只要能翻墙,上传头像是没有问题的。你用的是apache部署的吗?

加载中
0
Qulc
Qulc

先谢邀,我现在把boocamp部署到Openshift的云引擎上去了,

这个问题我原来也遇到过,忘了什么原因了,我现在本机也重现不了这个错误,你可以修改这段代码

except Exception, e:
        return redirect('/settings/picture/')

把异常打印或记录日志,看看具体的错误



0
宅蓝三木
宅蓝三木

我现在定位到这里了:

withopen(filename,'wb+') as destination:

            forchunkinf.chunks():
                destination.write(chunk)

它无法在media/profile_pictures下面创建文件。但是我直接用apache用户在该目录下调python是可以创建文件的

宅蓝三木
宅蓝三木
回复 @屈利春 : nqzx.net 上传头像就会出现这个问题。我把debug打开了,你可以看看
Qulc
Qulc
能把错误信息发出来我看看不?
0
Qulc
Qulc

我试了下,好像是上传成功了,写入失败了

宅蓝三木
宅蓝三木
好像中文用户名不行,看来我得改成让id来当文件名了
0
宅蓝三木
宅蓝三木
好奇怪,我连上传都不行
0
宅蓝三木
宅蓝三木

@屈立春 哈哈,已经解决了,两个原因:

1. 不支持中文名存储文件,所以我使用用户id作为用户名,绕过了这个问题。

2. PIL编译时不支持jpeg,所以重新编译了按照下面的方法重新编译了一下就okay了。

http://blog.chinaunix.net/uid-24258-id-3126797.html

返回顶部
顶部