这一步实现了tornado基本的文件上传和保存,使用js的Ajax异步提交文件表单
前台界面
css样式表
在 static/css 目录下创建样式表 stylesheet.css
1 | * { |
HTML
在 temples 中创建上传文件界面 upload.html
1 |
|
这里用到了html5的一个标签 <progress>
,用来刻画上传的进度
js
引入jquery库和一些需要的库,这些都放在 static/js 目录下
这里需要一个md5加密的js库,点击这里
下面的代码暂时写在网页中,用来控制界面样式,当选中上传的文件时,界面会有一些变化。
1 | <script type="text/javascript"> |
上完css和js,选中需要上传的文件之后的界面是这样的
当然也可以选择多个文件。
上传文件初次尝试
前台js代码,实现异步提交文件()在上面js代码后面继续写
开始上传
按钮点击事件
1 | $("#btnupload").click(function () { |
获取所有需要上传的文件,对每一个文件进行处理,将文件传给 yyupload()
函数进行处理。
1 | function yyupload(file) { |
这里应给多文件进行一些处理,现在为了实现简单的文件上传,所以 yyupload()
对文件暂时无处理,直接传给上传函数 upload()
1 | function upload(file) { |
upload()
函数中,使用了 FormData
对象和 XMLHttpRequest
对象。(参考这里)
- FormData 通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对。它可以更灵活方便的发送表单数据,因为可以独立于表单使用
- XMLHttpRequest 是一个API, 它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户。XMLHttpRequest 在 AJAX 中被大量使用。
后台处理
处理视图 UploadJobHandler
在 views.py中创建处理视图 UploadJobHandler
1 |
|
这里将上传的文件添加后缀 .part,放在 static/upload/
下。
添加路由 /uploadfile
在 urls.py 添加 /uploadfile
路由,其对应的视图为 UploadJobHandler
。添加之后 urls.py中代码如下:
1 | # coding: utf-8 |
代码编写完成之后,重启服务。此时文件结构如下图: