首页 > Web开发 > 详细

WEB的文件上传实现

时间:2015-10-21 10:55:45      阅读:424      评论:0      收藏:0      [点我收藏+]

1. 工程代码结构

templates
    +UploadFlush.html
    +UploadAjax.html
UploadServer.py


2. 上后端代码(基于Python Flask):

#UploadServer.py
#coding=utf-8
__author__ = ‘root‘
from flask import request
from flask import Flask
from flask import render_template
from werkzeug import secure_filename
app = Flask(__name__)
@app.route(‘/upload‘, methods=[‘Get‘, ‘POST‘])
def upload_fie():
    if request.method == ‘POST‘:
        f = request.files[‘file‘]
        #windows下放入D:/tempfile/
        #f.save(‘D:/tempfile/‘+secure_filename(f.filename))
        #Linux下放入/tmp
        f.save(‘/tmp/‘+secure_filename(f.filename)) 
@app.route(‘/upload_flush‘)
def upload_flush():
    return render_template(‘UploadFlush.html‘)
@app.route(‘/upload_ajax‘)
def upload_ajax():
    return render_template(‘UploadAjax.html‘)
if __name__ == ‘__main__‘:
    app.run(debug=True, host=‘0.0.0.0‘, port=5001)

3. 上前端代码

1) UploadFlush.html 代码,完成后刷新。

<!--UploadFlush.html-->
<!doctype html>
<title>UploadFlush</title>
<h1>UploadFlush</h1>
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type=file name=file>
<input type=submit value=Upload>
</form>

2) UploadAjax.html 代码,上传时进度条实时显示进度。

<!--UploadAjax.html-->
<!DOCTYPE html>
<html>
<head>
    <title>UploadAjax</title>
    <script type="text/javascript">
        function UpladFile() {
            // 获取文件对象
            var fileObj = document.getElementById("file").files[0]; 
            // 接收上传文件的后台地址
            var FileController = "/upload";
            // FormData 对象
            var form = new FormData();
            // 文件对象
            form.append("file", fileObj);
            // XMLHttpRequest 对象
            var xhr = new XMLHttpRequest();
            xhr.open("post", FileController, true);
            xhr.onload = function () {
                //console.log("上传完成!");
            };
            xhr.upload.addEventListener("progress", progressFunction, false); 
            xhr.send(form);
        }
        function progressFunction(evt) {
            var progressBar = document.getElementById("progressBar");
            var percentageDiv = document.getElementById("percentage");
            if (evt.lengthComputable) {
                progressBar.max = evt.total;
                progressBar.value = evt.loaded;
                percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
            }
        }
        
</script>
</head>
<body>
<input type="file" id="file" name="file" />
<br/><br/>
<input type="button" onclick="UpladFile()" value="确定上传" />
<progress id="progressBar" value="0" max="100">
</progress>
<span id="percentage"></span>
</body>
</html>


WEB的文件上传实现

原文:http://my.oschina.net/crooner/blog/519694

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!