web2py修改上传文件的扩展名为txt



我使用fine-uploader.js和fine-uploader.css使用web2py框架上传我的文件。

控制器中的回调是
def upload_callback():
if 'qqfile' in request.vars:
filename = request.vars.qqfile
newfilename = db.doc.filename.store(request.body, filename)
db.doc.insert(filename=newfilename,uploaded_by=auth.user.id)
return response.json({'success': 'true'})

模型
uploadfolder = os.path.join(request.folder, 'uploads')
db.define_table('doc',
Field('name', requires = IS_NOT_EMPTY()),
Field('filename', 'upload',autodelete=True,uploadfolder=uploadfolder),
Field('uploaded_by', db.auth_user)
)

当我上传文件'test01.xls'时,web2py将其存储在文件"doc.filename.bfbf907529358f82.7830302729.txt"

我不明白为什么扩展名xls被更改为txt。我也试过上传一个jpg文件。Web2py将上传文件的扩展名更改为txt。谁能帮帮我。

由于request.vars.qqfile不是文件名,而是cgi.FieldStorage对象,因此不能使用它作为文件名,而必须从中提取文件名:

filename = request.vars.qqfile.filename

或者,您可以简单地将FieldStorage对象直接传递给.insert方法,web2py将自动处理提取文件名并保存文件:

def upload_callback():
if 'qqfile' in request.vars:
db.doc.insert(filename=request.vars.qqfile, uploaded_by=auth.user.id)
return response.json({'success': 'true'})

相关内容

最新更新