使用DjangoUeditor上传图片到七牛,在本地的sae环境运行正常,在sae上则上传错误

修改DjangoUeditor里的views.py的save_upload_file

#保存上传的文件
def save_upload_file(upload_file,key):
    access_key = ''
    secret_key = ''
    bucket_name = ''
    try:
        from qiniu import Auth,put_file,put_data
        q = Auth(access_key, secret_key)
        token = q.upload_token(bucket_name, key)
        ret, info = put_data(token, key, upload_file)
        print(info)
        if ret.get('key',None) == None:
            raise Exception('upload error')
        else:
            return u"SUCCESS"
    except Exception,E:  
        return u"失败"+info
#返回数据
QINIU_BUCKET_DOMAIN = 'http://7xpt71.com1.z0.glb.clouddn.com/'
return_info = {
'url': urllib.basejoin(QINIU_BUCKET_DOMAIN , OutputPathFormat) , # 保存后的文件名称
'original': upload_file_name, #原始文件名
'type': upload_original_ext,
'state': state, #上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
'size': upload_file_size
}
return HttpResponse(json.dumps(return_info,ensure_ascii=False),content_type="application/javascript") 

在本地的sae环境下,成功上传,但是在sae服务器环境下,则上传错误。
下面是本地成功上传和服务器下失败的抓包:
图片描述
图片描述

我注意到,本地成功上传,Content-Type是application/javascript,到了sae服务器,会产生一个500错误,Content-Type成了text/html。

代码和设置是完全一样的,我直接从sae上chekout下来本地,上传也是成功的,但在sea上就会上传失败,产生一个500错误。

有人知道是为什么吗?

阅读 4.9k
2 个回答

问题已解决。

我把 save_upload_file 里的try..except 去掉,发现报一个IOError
[Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/data1/www/htdocs/725/fudjangoblog/1']

追踪到问题出现在qiniu/services/storage/upload_progress_recorder.py里调用了tempfile.gettempdir()。
把tempfile.gettempdir()改成sae.core.get_tmp_dir() 就解决了。

我也与到同样问题,为什么要改成那样呢?sae模块用什么语句引入呀?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题