Js异步上传加进度条

时间:2023-03-08 22:21:36
Js异步上传加进度条

http://www.ruanyifeng.com/blog/2012/09/xmlhttprequest_level_2.html

http://www.cnblogs.com/yuanlong1012/p/5127497.html

https://front-js.cc/test/fileupload/

http://www.ruanyifeng.com/blog/2012/08/file_upload.html

1.客户端 upload.cshtml

<!doctype html>
<html>
<head> <script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(function () {
$('#btn').on('click', function () {
var files = $('#file').get(0).files;
var len = (files.length);
if (len > 0) {
console.log(files[0]);
if (window.FormData) {
var formData = new FormData();
// 建立一个upload表单项,值为上传的文件
formData.append('upload', files[0]);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Home/UploadFile');
// 定义上传完成后的回调函数
xhr.onload = function () {
if (xhr.status === 200) {
console.log('上传成功');
} else {
console.log('出错了');
}
};
xhr.upload.onprogress = function (event) {
if (event.lengthComputable) {
var complete = (event.loaded / event.total * 100 | 0);
var progress = document.getElementById('uploadprogress');
progress.value = progress.innerHTML = complete;
}
};
xhr.send(formData);
}
} });
});
</script>
</head>
<body>
<input id='file' type='file' />
<button id='btn'>clickme</button>
<progress id="uploadprogress" min="0" max="100" value="0">0</progress>
</body>
</html>

  2.服务端代码

        /// <summary>
/// 上传文件
/// </summary>
/// <returns></returns>
public ActionResult UploadFile()
{
if (Request.Files.Count > )
{
Request.Files[].SaveAs( AppDomain.CurrentDomain.BaseDirectory+"\\upload\\" + Guid.NewGuid().ToString() );
} return View();
}
        /// <summary>
/// 上传页面
/// </summary>
/// <returns></returns>
public ActionResult Upload()
{ return View("Upload");
}