我使用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'})