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@linuxyw bottle]# vim main.py
#/usr/bin/env python
#coding=utf-8
from bottle import route, run
from bottle import request
#定义上传路径
save_path = './upload'
#文件上传的HTML模板,这里没有额外去写html模板了,直接写在这里,方便点吧
@route('/upload')
def upload():
return '''
'''
#文件上传,overwrite=True为覆盖原有的文件,
#如果不加这参数,当服务器已存在同名文件时,将返回“IOError: File exists.”错误
@route('/upload', method = 'POST')
def do_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')
def do_upload():
upload = request.files.get('data')
import os.path
name, ext = os.path.splitext(upload.filename) #用os.path.splitext方法把文件名和后缀相分离
upload.filename = ''.join(('123',ext)) #修改文件名
upload.save(save_path,overwrite=True) #把文件保存到save_path路径下
return u'上传成功 原文件名是:%s 文件后缀名是:%s \n 修改后的文件名是:%s' %(name,ext,''.join(('123',ext)))
用浏览器上传文件banner5_6.jpg后,成功显示:
上传成功 原文件名是:banner5_6 文件后缀名是:.jpg 修改后的文件名是:123.jpg
服务器文件结构:
[root@linuxyw bottle]# tree
.
├── main.py
├── upload
│ ├── 11.png
│ ├──123.jpg
│ └── 23.png
如果有不懂的,可以看bottle官网文档
官方文档:http://www.bottlepy.org/docs/dev/index.html
SVN请跳转至:教程总目录
这些代码已提交到SVN中,有需要的朋友可在SVN下载
bottle 文件服务器,python bottle 框架基础教程:文件上传 | linux系统运维相关推荐
- python实现TCP远程服务器文件上传,下载系统
TCP服务器代码如下: from socket import *def client_upload(client_socket):"""上传数据""& ...
- 千峰云计算linux教程650集,linux系统运维从入门到精通教程(Linux安装极速入门,零基础必备)
第一天 1. 完成VMware下载,centos7下载,完成配置,获得模拟服务器一台. 2. 使用root登录. 服务器 (可以当初普通计算机,与普通的计算机内部结构相差不大) VMware是安装虚拟 ...
- SSM框架使用Layui文件上传插件实现多文件上传(多文件列表)
SSM框架使用Layui文件上传插件实现多文件上传(多文件列表) pom.xml文件的配置 想要实现SSM框架实现多文件上传,必要的jar包必须要在pom.xml文件中引入.如下: <!--co ...
- 基于python的selenium两种文件上传方式
方法一.input标签上传 如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径. 方法二.非input标签上传 这种上传方式需要借助第三方工具,主要有以下三种情 ...
- 【代码审计-2】PHP框架MVC类文件上传断点测试挖掘
1.文件上传漏洞挖掘: (1)关键字搜索(函数.键字.全局变量等):比如$_FILES,move_uploades_file等 (2)应该功能抓包:寻找任何可能存在上传的应用功能点,比如前台会员中心, ...
- 原生态的ajax如何上传文件,原生ajax和iframe框架实现图片文件上传的两种方式
大家应该可以举出几种常用的异步文件上传功能的实现方式,使用频率较多的有原生ajax和iframe框架,实现图片文件上传,下面就为大家分享图片文件上传的两种方式:原生ajax和iframe框架,供大家参 ...
- 文件上传linux服务器,Linux 文件上传Linux服务器
进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...
- Linux系统运维工程师学习(基础 一)
Linux系统运维工程师学习(基础 一) 1.1计算机软硬件与操作系统介绍 计算机系统的组成 硬件系统 主机(中央处理器,内部处理器) 外部设备(I/O设备接口,外部存储器,输入输出设备) 软件系统 ...
- python bottle框架 运维_python bottle框架(WEB开发、运维开发)教程 | linux系统运维...
教程目录 一:python基础 二:bottle基础 python bottle 框架基础教程:环境部署 三:WEB开发教程 四:运维开发教程 运维开发(1.1):框架.结构介绍 运维开发(1.2): ...
最新文章
- 头条面试官:NIO 是不是就是I/O多路复用?我:不是
- 什么是三极管的倒置状态及其作用!
- 技术解析:如何用pyecharts绘制时间轮播图
- 虚拟化记录--No.1
- java 接口隔离_《Java设计模式及实践》—1.5.4 接口隔离原则
- 2019年2月25日 Range Sum of BST
- BootStrap修改modal模态框的宽度
- Delphi2010正式版的代码格式化及自动完成
- 于的繁体字有几种写法_写字繁体字有几种写法 , 辈 字 用繁体字有几种写法?...
- 视频测试皮肤的软件,皮肤检测仪(LEIM魔镜仪)安装及操作视频
- 谷歌浏览器插件 - 为 Microsoft Bing 搜索引擎首页添加一个【保存背景图片】的按钮(版本 1)
- 喜迎进博会 欢聚环球港 共享消费城——2021环球商业年会暨城市综合体论坛圆满举行
- 如何删除桌面的回收站图标
- 无线传感器网络期末复习知识点总结资料
- java web 下拉列表_关于web中下拉列表的几种实现方法
- 代谢组学通路富集分析
- 价格时序预测-LSTM
- 谷歌浏览器怎么样切换为原来的经典主题皮肤
- Android商城开发----点击左侧分类列表右侧更新对应列表内容
- 2019年如何抓住社交电商的风口
热门文章
- iPhone 近距离传感器的使用
- python3数据库分类和比较(入门)
- 【生物信息学】基于SparCC, MENA, LSA, CoNet构建微生物相互作用网络
- 微课在中职计算机基础中的应用,微课在中职学校计算机应用基础课程中的应用.pdf...
- 【二分】Kevin喜欢零
- 生信科技爱好者祝大家元宵快乐!
- 四章——Nginx网站服务(应用——linux防护与群集)
- 伯颜自留后路,项羽破釜沉舟。谁又是对的呢
- 用户称新iMac2020图形问题?你的iMac中招没有
- CoreData用法二:NSFetchedResultsController实例操作与讲解