前端如何上傳檔案

2022-02-16 02:27:37 字數 1792 閱讀 3458

前端無法直接操作本地檔案,所以需要使用者觸發。常見的有三種觸發方式:

因為檔案不好修改樣式,一般我們會自己做乙個上傳的按鈕來代替原生上傳按鈕。

然後,可以在自定義按鈕上繫結點選事件,在這個點選事件裡面對原生上傳按鈕進行操作,可以像下面這樣:

let file = document.queryselector('#fileinput');

file.click();

也可以將原生按鈕覆蓋在自定義按鈕上面,然後將原生按鈕和自定義按鈕設定相同的大小,然後將原生按鈕定位在自定義按鈕之上,最後設定原生按鈕的opacity為0即可。

// 建立乙個formdata物件,後期通過ajax上傳到伺服器

let formdata = new formdata();

// ajax上傳到伺服器**略...

});// 後面再次獲取到這個formdata檔案,就可以得到formdata物件的myfilename檔案(c:\fakepath\1111.jpg)

let file = formdata.get('ifile');

// file型別資料件內容:

// }這個file檔案,如果是的話,需要在前端顯示。但是file檔案是二進位制檔案,沒法直接檢視,需要進一步轉換。這個可以通過filereader物件就可以做到。

通過例項化乙個filereader,調它的readasdataurl並把file物件傳給它,監聽它的onload事件,load完讀取的結果就在它的result屬性裡了。)它是乙個base64格式的,可直接賦值給乙個img的src)。

// 後期取到file檔案

let reader = new filereader();

let filetype = file.type;

// reader讀取完成

reader.onload = function (e)

}// 呼叫reader進行讀取

reader.readasdataurl(file);

我們需要監聽拖拽事件:

$(".img-container").on("dragover", function (event) ).on("drop", function(event) )
// 貼上的資料是在event.clipboarddata.files裡面:

$("#editor").on("paste", function(event) );

注意:上面,我們使用了三種方式獲取檔案內容,最後得到:

如果不使用jquery,沒有問題,直接使用ajax傳送就好;如果使用jquery,要設定兩個屬性為false,因為jquery會自動把內容做一些轉義,並且根據data自動設定請求mime型別,這裡告訴jquery直接用xhr.send發出去就行了。:

$.ajax();

前端檔案上傳

上傳按鈕 shangchuan this div 上傳檔案 style display none id formfile file id upload btn form js 檔案上傳 var click btn 確認哪個按鈕提交的 function shangchuan click updata ...

檔案上傳前端原理

1 我們在實現檔案上傳功能時,往往是找到乙個現成的檔案上傳元件,然後根據其api進行一些引數配置,然後再根據教程取配置後端對接受到的檔案進行處理 2 但是,有沒有思考過,檔案只是乙個名稱,從前端到後端,檔案是怎麼從前端傳遞到後端的?傳輸的資料到底是什麼?檔案如何從計算機中獲取到的?從計算機獲取到檔案...

jq實現前端檔案上傳

formdata formdata是xmlhttprequest level 2 新增的乙個介面。使用formdata可以實現各種檔案上傳。使用 建立formdata的例項 var formdata new formdata 注意 使用jq的 ajax 方法來進行檔案上傳時,需要設定contentt...