您的位置:首页 > 其它

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对象直接操作文件。要小心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bottle框架