2012-04-17 121 views
-3

我想知道如何不低於工作的代碼做的,因爲我發現這樣的網站上獲取文件的名字,但我不完全瞭解它是如何工作的:下面的代碼是什麼意思?

function handleFileSelect(evt) { 
    var files = evt.target.files; 
    localStorage["fname"] = files[0].name; //save the name for future use 
} 

是上述正確的代碼對於一種形式代碼象下面這樣:

<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' > 
    <p><input name='fileImage' type='file' class='fileImage' /></p> 
<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form> 
+2

對於您而言,具體哪些方面不清楚? – 2012-04-17 00:29:23

+0

那麼,evt.target.files是假設匹配我已經在表單中的目標名稱或是它自己的關鍵字。還有什麼關於文件,是否假設匹配文件輸入的名稱屬性?它應該是evt.upload_target.fileImage? 'fname'來自localStorage的什麼地方? – user1324106 2012-04-17 00:31:13

回答

1

即功能被綁定可能是綁定的到change事件文件輸入字段的。

因此,讓我們打破這一點。

function handleFileSelect(evt) { 

當一個函數被綁定爲一個監聽到的事件,通常,表示事件在被傳遞的對象,這是evt變量由此事件處理函數接受。

var files = evt.target.files; 

對於DOM事件,事件對象通常有一個名爲target屬性,是觸發事件的DOM元素的引用。所以evt.target返回文件輸入元素。

而文件輸入元素有一個名爲files的屬性,這是一個用戶選擇的文件對象數組(注意可能只有一個文件被選中,但它仍然是隻有一個項目的數組) 。該行將該數組分配給局部變量files

localStorage["fname"] = files[0].name; 

localStorage是一種持久性的密鑰值存儲(幾分例如Cookie)引入HTML5的一部分。 "fname"是我們在下面存儲值的關鍵。並且files[0].name獲取第一個文件對象,並返回其name屬性,從而有效地獲取所選文件的名稱。然後存儲該值,以便即使刷新頁面,您也可以通過運行只讀回最後選擇的文件名。localStorage["fname"]

+0

好吧,這是一個很好的解釋,我完全理解它:) – user1324106 2012-04-17 00:46:18

+0

值得一提的是,所使用的功能只能在最近的瀏覽器中使用,它們會在不是很老的功能上失敗。 – RobG 2012-04-17 01:13:35

相關問題