1.文件上传

如果要完成文件上传,则需要对上文的form做一点改动,具体如下:

<form action="/upload" method="post" enctype="multipart/form-data">
Category: <input type="text" name="category" />
Select a file: <input type="file" name="upload" />
<input type="submit" value="Start upload" />
</form>

bottle把file的upload 是放在BaseRequest.files里的(以FileUpload进程的方式存在),这里,我们的例子,都是假设存在硬盘里的

@route('/upload', method='POST')
def do_upload():
category = request.forms.get('category')
upload = request.files.get('upload')
name, ext = os.path.splitext(upload.filename)
if ext not in ('.png','.jpg','.jpeg'):
return 'File extension not allowed.'
save_path = get_save_path_for_category(category)
upload.save(save_path) # appends upload.filename automatically
return 'OK'

2)有些js或者REST的客户端,发送application/json 给服务器,通过这个方式来传递信息。这个时候,BaseRequest.json属性就保存这些信息。

The raw request body
You can access the raw body data as a file-like object via BaseRequest.body. This is a BytesIO buffer or a
temporary file depending on the content length and BaseRequest.MEMFILE_MAX setting. In both cases the body
is completely buffered before you can access the attribute. If you expect huge amounts of data and want to get direct
unbuffered access to the stream, have a look at request[’wsgi.input’].

3)WSGI环境

每个的BaseRequest都保存着一个WSGI的环境字典。

举例如下;

@app.route('/my_ip')
def get_remote_ip():ip=request.environ.get('REMOTE_ADDR')return template('Your IP is:{{IP}}',IP=ip)

4)template

bottle自带一个模板,称之为:SimpleTemplate Engine

使用这个模板,可以通过template()函数或者view()装饰器。

只需要把模板名称和要替换的参数信息传递进去即可。

比如:

@route('/hello')
@route('/hello/<name>')
def hello(name='World'):
return template('hello_template', name=name)

bottle去哪里找这些模板呢:去./VIEWS/目录下或者Bottle.template_path环境变量。

Templates are cached in memory after compilation. Modifications made to the template files will have no affect until
you clear the template cache. Call bottle.TEMPLATES.clear() to do so. Caching is disabled in debug mode.

转载于:https://www.cnblogs.com/aomi/p/7054242.html

使用bottle进行web开发(9):文件上传;json传递相关推荐

  1. spring boot 整合web开发之文件上传、静态资源访问、异常处理、返回JSON数据

    目录 springboot 整合web开发 返回json数据 静态资源访问 文件上传 全局异常 1.返回json数据 springboot默认的是jackson-databind做为json处理器.也 ...

  2. web渗透之文件上传漏洞知识总结

    一.文件上传漏洞思路: 第一步: 首先看中间件:因为第一步看中间件就是确定是否存在解析漏洞(学习整理几种解析漏洞的对应版本,有些低版本有解析漏洞,有些高版本就没有.)中间件版本确定了,解析漏洞就确定了 ...

  3. 想说爱你不容易 | 使用最小 WEB API 实现文件上传(Swagger 支持)

    前言 上回,我们使用最小 WEB API 实现文件上传功能(<想说爱你不容易 | 使用最小 WEB API 实现文件上传>),虽然客户端访问是正常的,但是当打开 Swagger 页面时,发 ...

  4. web安全之文件上传漏洞总结

    web安全之文件上传漏洞总结 https://www.cnblogs.com/YGblood/p/10443600.html

  5. 微信小程序开发之文件上传下载应用场景(附Demo源码)

    微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持. http://www.henkuai.com/forum.php?mod=viewt ...

  6. Web网络攻防文件上传。.

    Web网络攻防文件上传 上传漏洞靶场upload-labs安装 upload-labs 是由php 语言靶场,因此需要在PhpStudy下进行使用. 靶场文件下载:https://github.com ...

  7. 陪玩网站源码的PHP后台开发,文件上传与下载的实现

    在陪玩网站源码开发中,除了客户端之外还得开发一个服务端,而服务端一般采用的是PHP开发框架及语言,在服务端中我们会上传一些需要用到的文件,具体需要如何实现呢?今天我们就一起来了解一下陪玩网站源码的PH ...

  8. web安全之文件上传漏洞攻击与防范方法

    一. 文件上传漏洞与WebShell的关系 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等.这种攻击方式是最为直接和有效 ...

  9. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  10. Web安全-之文件上传漏洞场景

    1   上传漏洞危害介绍 上传是Web中最常见的功能,如果上传功能存在设计.编码缺陷,就容易形成上传漏洞,从而成为致命的安全问题,攻击者可以通过上传脚本木马,实现查看/篡改/删除源码和任意涂鸦网页,可 ...

最新文章

  1. Review: Maximum Energy Efficiency Tracking for Wireless Power Transfer Systems
  2. python视频教程云盘-Python自动化测试视频教程【百度云盘下载】
  3. jquery操作iframe
  4. HTC Vive会是HTC的下一个增长引擎吗?
  5. 逻辑综合——概述与基本概念
  6. C++ 11 深度学习(五)类型转换:static_cast dynamic_cast const_cast reinterpret_cast
  7. 输出四位完全平方数_完全平方数中的规律
  8. UVA10295 POJ2403 ZOJ1902 Hay Points【map】
  9. SpringBoot 中 @Transactional 的使用
  10. 最酷的程序员应该知道的【LLVM】!
  11. php未定义常量破解,如何使PHP未定义的常量注意到错误
  12. java 刘意 2018_2018刘意油画●水彩作品展
  13. /etc/rc.d/init.d/leds
  14. Fluent 旋转机械 风机 二维情况下的力矩计算算法
  15. linux shell fflush,強制shell腳本fflush
  16. POI excel插入图表
  17. 2W字!梳理50道经典计算机网络面试题(收藏版)
  18. EduCoder-程序设计技术R(第四部分循环结构程序设计1)- 第1关:小球自由落体运动
  19. excel合并多个工作表_简单快速多个Excel表合并成一个Excel表
  20. 程序猿也爱学英语,有图有真相

热门文章

  1. Ansible详解(十一)——Ansible Template高级控制
  2. Cobbler详解(五)——cobbler常用命令
  3. IS-IS详解(六)——IS-IS LSP机制详解
  4. 获取内网、通过外部网站返回得到内网外部IP (C#/VB.NET)
  5. 从10秒到2秒!ElasticSearch性能调优实践
  6. Linux下如何编写和使用自定义的Shell函数和函数库
  7. Hibernate学习(一)创建数据表
  8. Android系统和内核编译命令
  9. (转)Android 如何建立你的菜单
  10. GDB+coredump定位段错误