1.5.6 文件上传
2016-01-11 11:58
337 查看
为了支持文件上传,我们不得不改变一下<form>标签。首先,我们告诉浏览器将表单数据编码,在<form>标签加入 enctype="multipart/form-data"属性。然后,加入<input type="file"/>标签来允许用户选择文件。这是一个例子:
<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>
在VaseRequest.files里存储文件作为文件上传的实例,连同一些上传的元数据。让我们来假设你想将文件存入硬盘。
@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'FileUpload.filename包括在客户端系统的文件名,但是它被标准化来避免不支持的字符产生的问题。如果你需要未更改的名字,请参考FileUpload.raw_filename。
如果你想把文件存进硬盘,FileUpload.save是非常被推荐的。它能预防一些常见错误(比如,他不会在获得许可前重写重名文件)并且它存储更有效率。你能通过FileUpload.file对象直接操作文件。要小心。
<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>
在VaseRequest.files里存储文件作为文件上传的实例,连同一些上传的元数据。让我们来假设你想将文件存入硬盘。
@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'FileUpload.filename包括在客户端系统的文件名,但是它被标准化来避免不支持的字符产生的问题。如果你需要未更改的名字,请参考FileUpload.raw_filename。
如果你想把文件存进硬盘,FileUpload.save是非常被推荐的。它能预防一些常见错误(比如,他不会在获得许可前重写重名文件)并且它存储更有效率。你能通过FileUpload.file对象直接操作文件。要小心。
相关文章推荐
- 1.2.0 Quickstart: "Hello World"(快速开始:“你好世界!”)
- 1.3.0 REQUEST ROUTING(请求路由)
- 1.3.1 DYNAMIC ROUTES(动态路由)
- 1.3.2 HTTP REQUEST METHODS(http 请求方式)
- 1.3.3 ROUTING STATIC FILES(路由静态文件)
- 1.3.4 ERROR PAGES(错误页面)
- 1.4.0 GENERATING CONTENT(生成内容)
- 1.4.1 STATIC FILES(静态文件)
- 1.4.2 HTTP ERRORS AND REDIRECTS(HTTP 错误和重定向)
- 1.4.4 Cookies
- 1.5.0 REQUEST DATA(请求数据)
- 1.5.1 INTRODUCING FORMSDICT(介绍表格字典)
- 1.5.2 COOKIES
- 1.5.3 HTTP HEADERS
- 1.5.4 查询值
- 1.5.5 HTML表单处理
- 1.6 PLUGINS(插件)
- 1.6 TEMPLATES(模板)
- 1.5.9 WSGI ENVIRONMENT(WSGI 环境)
- 1.5.8 THE RAW REQUEST BODY(请求的主体部分)