[英]Grabbing local files from drag and drop event and displaying them
我試圖從放置事件中獲取拖放的文件,並在一個區域中顯示圖像,以便用戶知道放置成功。 但是,我不確定如何獲取那些丟棄的文件並將其顯示在一個區域中。 我已經嘗試過這樣:
$(e.originalEvent.dataTransfer.files).each(function(){
$("#feedBackAreaTest").append("<img src='"+this.name+"' />");
});
但是,顯然,它只是抓住了這個名字。 我的問題是,顯示掉落的圖像的正確方法是什么? this.name
僅獲取名稱,而不是文件的鏈接。
File
對象就像牡蠣:您可以對其進行表面檢查,但是直到將它們撬開並向里看時才能知道它們的真正含義。 為此,您需要使用FileReader
從每個File
對象提取數據:
$(e.originalEvent.dataTransfer.files).each(function(){
var reader = new FileReader();
reader.readAsDataURL(this);
reader.onload = function(readEvent) {
$("#feedBackAreaTest").append("<img src='"+readEvent.target.result+"' />");
}
});
FileReader
對象具有一些讀取方法,每個讀取方法都將Blob
或File
對象作為參數( readAsText
, readAsDataURL
等)。 讀取操作完成后, FileReaader
會觸發一個load
事件,該事件具有剛讀取的文件中的數據。
使用FileReader API; 我從MDN中提取了可以使用的示例:
var oFReader = new FileReader(),
rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i;
oFReader.onload = function (oFREvent) {
$("#feedBackAreaTest").append("<img src='"+oFREvent.target.result+"' />");
};
function loadImageFile() {
if (document.getElementById("uploadImage").files.length === 0) {
return;
}
var oFile = document.getElementById("uploadImage").files[0];
if (!rFilter.test(oFile.type)) {
alert("You must select a valid image file!");
return;
}
oFReader.readAsDataURL(oFile);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.