Ajax方式上傳檔案

2022-03-14 09:11:18 字數 1088 閱讀 6105

用到兩個物件

第乙個物件:formdata

第二個物件:xmlhttprequest

目前新版的firefox 與 chrome 等支援html5的瀏覽器完美的支援這兩個物件,但ie9尚未支援 formdata 物件,還在用ie6 ? 只能仰天長嘆....

有了這兩個物件,我們可以真正的實現ajax方式上傳檔案。

示例**:

很簡潔的**,便可以達到ajax方式上傳檔案,上面的**中使用這種傳統的選擇檔案的方法產生檔案物件,html5還支援使用多種更靈活的方式,如拖拽檔案到指定的元素上產生。

ajax已成功上傳檔案,但這時我們會想到乙個問題,如何顯示進度條?帶著這個問題,腦子會想到,flash? 瀏覽器外掛程式?。

no,現在不需要這些東西了。

開始著手,先做乙個進度條,進度條也很簡單,使用html5 新加的標籤:

這個在瀏覽器中便會呈現了乙個進度條,現在我們要做的就是在上傳的時候,實時的去改變它的value值,然後進度顯示的問題便交給它了。

我們的伺服器端無需修改,只需要在js中xhr物件加乙個事件。

xhr.upload.addeventlistener("progress", progressfunction, false)

progressfunction 被呼叫的時候會傳進乙個事件物件,這個物件有兩個屬性,乙個就是loaded 乙個是total ,分別代表,已上傳的值,和總要上傳的值。

這正是我們需要的,所以這個方法,可以這樣寫:

function progressfunction(evt)

}這樣便可以完成,上傳進度顯示了。

如下針對上面的第乙個示例**,做乙個調整:

示例**2,帶進度顯示:

後台接收檔案的程式可以是任何語言(c#,php,python 等)編寫的,上述例子使用c#

很簡單,無需為這個進度條做任何改動。

var flist = request.files;

for (int i = 0; i < flist.count; i++)

//注釋

Ajax方式上傳檔案

用到兩個物件 第乙個物件 formdata 第二個物件 xmlhttprequest 目前新版的firefox 與 chrome等支援html5的瀏覽器完美的支援這兩個物件,但ie9尚未支援 formdata 物件,還在用ie6 只能仰天長嘆.有了這兩個物件,我們可以真正的實現ajax方式上傳檔案。...

Ajax方式上傳檔案

用到兩個物件 第乙個物件 formdata 第二個物件 xmlhttprequest 目前新版的firefox 與 chrome 等支援html5的瀏覽器完美的支援這兩個物件,但ie9尚未支援 formdata 物件,還在用ie6 只能仰天長嘆.有了這兩個物件,我們可以真正的實現ajax方式上傳檔案...

ajax方式上傳檔案

借助formdata實現表單的序列化,完成檔案上傳 此時不是借助表單提交方式,所以enctype屬性可以去掉 1.表單方式 button data action upload on click function file ajaxupload.do var formdata new formdata...