AD

Flask 上传文件(一)

对与WEB APP来说,响应客户端发送的命令和数据是非常重要的。在Flask框架中全部由 request 对象提供,就如前面讲解的 GET 和 POST 方法。Flask中的某些对象是全局对象,但它不是一个标准的全局对象,实际上是一个本地对象的代理,request 就是其中之一。

获取GET参数:request.args.get($key[, $defaultValue])
获取POST数据:request.from[$item]
获取上传文件:request.files[$item]

用Flask处理文件上传很容易,上传的文件储存在内存或者文件系统中的一个临时位置,你可以通过request 对象的 files 属性来访问这些文件,每个上传的文件都储存在那个字典里。它表现的就像一个标准的 Python file 对象,但它还有一个 save() 方法允许你把文件存储在服务器的文件系统上。

案例:<如下案例中,不支持中文文件名。>

/upload.py
/templates
/upload.html
/static
/Uploads

Code example:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>Flask - 上传文件</title>

</head>

<body>

<form action="upload" method="post" enctype="multipart/form-data">

<input type="file" name="file" /><br />

<input type="submit" value="Upload" />

</form>

</body>

</html>

Code example:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25


# -*- coding: utf-8 -*-

import os

from flask import Flask, request, render_template, redirect, url_for

from werkzeug.utils import secure_filename

app = Flask(__name__)

UPLOAD_FOLDER = 'static/Uploads'

@app.route('/upload', methods=['GET', 'POST'])

def upload():

if request.method == 'GET':

return render_template('upload.html')

elif request.method == 'POST':

f = request.files['file']

fname = secure_filename(f.filename) #获取一个安全的文件名,且仅仅支持ascii字符;

f.save(os.path.join(UPLOAD_FOLDER, fname))

return '上传成功'

@app.route('/')

def index():

return redirect(url_for('upload'), 302)

if __name__ == '__main__':

app.run(debug=True)

要点:

f = request.files[$item] 获取文件对象
f.filename 获取文件名,但请牢牢记住,这个值是可以伪造的,永远不要信任这个值。
werkzeug.utils.secure_filename(f.filename) 你可以将文件名传递给 Werkzeug 提供给你的 secure_filename() 函数,它会返回一个安全可靠的文件名,但是它不支持中文哦,仅仅支持ascii字符,这是为了跨平台和最大的兼容性而设计的。
标签: Web开发
分类: 编程
时间: 2014-12-06

相关文章

  1. flask上传文件

    项目中的代码,主要上传代码存储文件,存储文件名是根据文件内存md5出来的,注意里面一定要f.seek(0)不然会建立一个空文件. @app.route('/upload', methods=['GET', 'POST'] ...
  2. asp 判断上传文件中是否存在危险代码

    判断上传文件中是否存在危险代码 <% function CheckFileContent(FileName) dim ClientFile,ClientText,ClientContent,DangerString ...
  3. PHP文件上传判断file是否己选择上传文件的方法

    这篇文章主要介绍了PHP文件上传判断file是否己选择上传文件的方法,除了判断是否有上传的文件之外还对文件安全性进行了较为深入的分析,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了PHP文件上传判断file是否己 ...
  4. Android实现上传文件功能的方法

    这篇文章主要介绍了Android实现上传文件功能的方法,对Android初学者有一定的借鉴价值,需要的朋友可以参考下 本文所述为一个Android上传文件的源代码,每一步实现过程都备有详尽的注释,思路比较清楚,学习了本例 ...
  5. JQuery.uploadify 上传文件插件的使用详解 for ASP.NET

    今天下午整理文件上传的例子,感觉收集到的例子都很不人性话,后来找到一个还可以的,本来想改成类似于腾讯QQ相册那种方式,仔细看了一下是Flash的, 而且那个极速上传插件也不知道用什么做的?问了一下,说是什么cgi. 搞得 ...
  6. php curl 上传文件代码实例

    这篇文章主要介绍了php curl 上传文件代码实例,本文给出了两种实现方法,并分别给出了实现代码,需要的朋友可以参考下 假设server端上传文件处理脚本upload.php: <?php print_r($_P ...
  7. 上传文件先创建目录 再上传到目录里面去

    上传文件先创建目录,其实应该先加入判断文件夹是否存在,不存在则创建文件夹的,希望朋友们自行添加,这里给出的是核心代码. 1,表单部分: <html> <head> <title> my ...
  8. php上传文件问题汇总

    这篇文章主要给大家汇总介绍了一些php上传文件问题,需要的朋友可以参考下 1.先做个最简单的上传文件 <html> <head> <meta http-equiv="Content ...
  9. asp.net中MVC借助Iframe实现无刷新上传文件实例

    这篇文章主要介绍了asp.net中MVC借助Iframe实现无刷新上传文件的方法,详细分析了前端界面.回调函数与后台处理的详细流程,非常具有参考借鉴价值,需要的朋友可以参考下 本文实例讲述了asp.net中MVC借助If ...
  10. windows下使用IIS配置的PHP无法上传文件的解决方法

    windows下使用IIS配置的PHP无法上传文件,一直是很多网友比较疑惑的地方,本人搜集整理下,希望可以帮助你们 延续<Windows Server 2003中iis配置php>一文 服务器上使用Apach ...
  11. 如何使用JS获取IE上传文件路径(IE7,8)

    本篇文章是对使用JS获取IE上传文件路径的实现代码进行了详细的分析介绍,需要的朋友参考下 function validateFileSize(id, maxsize) { var btnsave = document.g ...
  12. Windwos下使用winscp和批处理实现通过SSH端口上传文件到Linux服务器上

    这篇文章主要介绍了Windwos下使用winscp和批处理实现通过SSH端口上传文件到Linux服务器上,本文只是简易实现和一个思路,生产环境请根据需求修改代码,需要的朋友可以参考下 Windwos下使用winscp和批 ...
  13. android 上传文件到服务器代码实例

    这篇文章主要介绍了android 上传文件到服务器的实现代码,需要的朋友可以参考下 android对于上传文件,还是很简单的,和java里面的上传都是一样的,基本上都是熟悉操作输出流和输入流!还有一个特别重要的就是需要一 ...
  14. jQuery插件ajaxFileUpload实现异步上传文件效果

    jQuery插件AjaxFileUpload用来实现ajax文件上传,该插件使用非常简单,接下来我们来看下用AjaxFileUpload插件实现文件上传的方法,有需要的小伙伴可以参考下 ajaxFileUpload是一个 ...
  15. php环境无法上传文件的解决方法

    对于dedecms 你没有选择上传文件,discuz批量上传显示成功,但看不到图片,ecshop商城等无法上传问题,只要是PHP的,而且代码本身没有问题.以下都适用 一. 检查网站目录的权限. 上传目录是否有写入权限. ...
  16. php上传文件并显示上传进度的方法

    这篇文章主要介绍了php上传文件并显示上传进度的方法,实例分析了php传输文件及显示传输进度的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php上传文件并显示上传进度的方法.分享给大家供大家参考.具体如下 ...
  17. Python用GET方法上传文件

    本文给大家介绍的是在Python中使用GET方法实现上传文件的方法,起因是有网友说Get方法不能用来上传文件,于是就做了这个例子,这里分享给大家,有需要的小伙伴参考下吧. 之前在osc看到一个文章讨论Get和Post的不 ...
  18. C#检测上传文件真正类型的方法

    这篇文章主要介绍了C#检测上传文件真正类型的方法,可有效的防止用户通过修改后缀名来改变文件类型的功能,需要的朋友可以参考下 本文实例讲述了C#检测上传文件真正类型的方法.分享给大家供大家参考.具体分析如下: 对于用户上传 ...
  19. C#实现HTTP上传文件的方法

    这篇文章主要介绍了C#实现HTTP上传文件的方法,包括了发送文件与接收文件的实现代码,具有不错的参考价值,需要的朋友可以参考下 本文实例讲述了C#实现HTTP上传文件的方法.分享给大家供大家参考.具体实现方法如下: 发送 ...