700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > bottle 文件服务器 python bottle 框架基础教程:文件上传 | linux系统运维

bottle 文件服务器 python bottle 框架基础教程:文件上传 | linux系统运维

时间:2023-08-04 14:33:07

相关推荐

bottle 文件服务器 python bottle 框架基础教程:文件上传 | linux系统运维

文件上传,需要注意的是前端html的form表单中,要添加enctype="multipart/form-data"属性,否则无法上传文件。在后端,用request.files方法,获取到表单传上来的文件,首先把对象赋值给一个变量名,如upload,然后用save()的方法来保存到服务器中。upload.save(save_path,overwrite=True),save_path是保存文件的路径,overwrite=True是指如果服务器中已有同名文件存在,则覆盖。

文件上传代码:

[root@linuxywbottle]#vimmain.py

#/usr/bin/envpython

#coding=utf-8

frombottleimportroute,run

frombottleimportrequest

#定义上传路径

save_path='./upload'

#文件上传的HTML模板,这里没有额外去写html模板了,直接写在这里,方便点吧

@route('/upload')

defupload():

return'''

'''

#文件上传,overwrite=True为覆盖原有的文件,

#如果不加这参数,当服务器已存在同名文件时,将返回“IOError:Fileexists.”错误

@route('/upload',method='POST')

defdo_upload():

upload =request.files.get('data')

upload.save(save_path,overwrite=True)#把文件保存到save_path路径下

return'ok'

run(host='0.0.0.0',port=8080,debug=True)

相关的演示,可自己运行上面代码

此外,上传的文件对象,还有这二个属性

filename:文件名

content_type :文件类型

如上面的代码,上传文件的时候,要获取文件名,就要用upload.filename, 要获取文件类型就用upload.content_type。这二件很实用,一般要先修改上传的文件名后,再保存到服务器中,content_type则可以检测文件是什么类型的文件,如果符合我们的上传类型,才保存。

@route('/upload',method='POST')

defdo_upload():

upload=request.files.get('data')

importos.path

name,ext=os.path.splitext(upload.filename)#用os.path.splitext方法把文件名和后缀相分离

upload.filename=''.join(('123',ext)) #修改文件名

upload.save(save_path,overwrite=True)#把文件保存到save_path路径下

returnu'上传成功原文件名是:%s文件后缀名是:%s\n修改后的文件名是:%s'%(name,ext,''.join(('123',ext)))

用浏览器上传文件banner5_6.jpg后,成功显示:

上传成功 原文件名是:banner5_6 文件后缀名是:.jpg 修改后的文件名是:123.jpg

服务器文件结构:

[root@linuxywbottle]#tree

.

├──main.py

├──upload

│├──11.png

│├──123.jpg

│└──23.png

如果有不懂的,可以看bottle官网文档

官方文档:/docs/dev/index.html

SVN请跳转至:教程总目录

这些代码已提交到SVN中,有需要的朋友可在SVN下载

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。