DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> HTML5上傳文件顯示進度的實現代碼
HTML5上傳文件顯示進度的實現代碼
編輯:HTML5詳解     
這裡我們是結合ASP.Net MVC做為服務端,您也可以是其它的服務端語言。讓我們看面這個片斷的Html: 

復制代碼代碼如下:www.mb5u.com
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" , id="form1"})) 

<div class="row"> 
<label for="file"> 
Upload Image:</label> 
<input type="file" name="fileToUpload" id="fileToUpload" multiple="multiple" onchange="fileSelected();" /> 
</div> 
<div id="fileName"> 
</div> 
<div id="fileSize"> 
</div> 
<div id="fileType"> 
</div> 
<div class="row"> 
<input type="button" onclick="uploadFile()" value="Upload Image" /> 
</div> 
<div id="progressNumber"> 
</div> 


相關的Javascript是這樣的: 

復制代碼代碼如下:www.mb5u.com
function fileSelected() { 
var file = document.getElementById('fileToUpload').files[0]; 
if (file) { 
var fileSize = 0; 
if (file.size > 1024 * 1024) 
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB'; 
else 
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB'; 
document.getElementById('fileName').innerHtml = 'Name: ' + file.name; 
document.getElementById('fileSize').innerHtml = 'Size: ' + fileSize; 
document.getElementById('fileType').innerHtml = 'Type: ' + file.type; 


function uploadFile() { 
var fd = new FormData(); 
fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]); 
var xhr = new XMLHttpRequest(); 
xhr.upload.addEventListener("progress", uploadProgress, false); 
xhr.addEventListener("load", uploadComplete, false); 
xhr.addEventListener("error", uploadFailed, false); 
xhr.addEventListener("abort", uploadCanceled, false); 
xhr.open("POST", "Home/Upload"); 
xhr.send(fd); 

function uploadProgress(evt) { 
if (evt.lengthComputable) { 
var percentComplete = Math.round(evt.loaded * 100 / evt.total); 
document.getElementById('progressNumber').innerHtml = percentComplete.toString() + '%'; 

else { 
document.getElementById('progressNumber').innerHtml = 'unable to compute'; 


function uploadComplete(evt) { 
/* This event is raised when the server send back a response */ 
alert(evt.target.responseText); 

function uploadFailed(evt) { 
alert("There was an error attempting to upload the file."); 

function uploadCanceled(evt) { 
alert("The upload has been canceled by the user or the browser dropped the connection."); 


上面是就原生的Javascript,在onchange事件執行fileSelected的function,在點擊button執行了uploadFile的function,這裡使用XMLHttpRequest實現AJax上傳文件。 注意代碼在Firefox 14 可以工作,IE 9目前不支持file api,可以參加這裡。 服務端的代碼很簡單: 

復制代碼代碼如下:www.mb5u.com
public class HomeController : Controller 

public ActionResult Index() 

return VIEw(); 

/// <summary> 
/// Uploads the specifIEd files. 
/// </summary> 
/// <param name="fileToUpload">The files.</param> 
/// <returns>ActionResult</returns> 
[HttpPost] 
public ActionResult Upload(HttpPostedFileBase[] fileToUpload) 

foreach (HttpPostedFileBase file in fileToUpload) 

string path = System.IO.Path.Combine(Server.MapPath("~/App_Data"), System.IO.Path.GetFileName(file.FileName)); 
file.SaveAs(path); 

VIEwBag.Message = "File(s) uploaded successfully"; 
return RedirectToAction("Index"); 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved