使用html5 javascript時,如何在用戶選擇文件時獲取文件路徑? 我需要在這個例子中使用的文件路徑:html5獲取文件路徑
用戶上傳一個文件,暫停它(我知道迄今爲止我認爲只有mozilla可以做到這一點),然後關閉瀏覽器並計劃恢復文件明天。我需要知道這個文件的文件路徑。
使用html5 javascript時,如何在用戶選擇文件時獲取文件路徑? 我需要在這個例子中使用的文件路徑:html5獲取文件路徑
用戶上傳一個文件,暫停它(我知道迄今爲止我認爲只有mozilla可以做到這一點),然後關閉瀏覽器並計劃恢復文件明天。我需要知道這個文件的文件路徑。
即使你確實有一個路徑(一些瀏覽器用來給你),也沒有辦法設置類型文件的輸入路徑。
因此,不可能用普通的JS和DOM來做你想做的事情。
我說這是不可能的,但現在你問我確實認爲有一種方法,用新的File API。以下步驟概述了需要完成的工作,但沒有經過測試,我不指望它能夠工作,只是爲了向您展示方式,全局變量也很糟糕,它只是向您展示您的最簡單方法。這裏是舉例一個很好的頁面上使用File API http://www.html5rocks.com/en/tutorials/file/dndfiles/
首先您需要的文件類型的輸入,那麼你可以一旦用戶選擇一個文件使用,您將得到對文件的訪問對象。 http://dev.w3.org/2006/webapi/FileAPI/#dfn-filereader
<input type="file" id="files" name="files[]" multiple />
<script>
var fileBlobs = [];
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// files is a FileList of File objects. You may now read their contents
var reader = new FileReader();
for (var i = 0, f; f = files[i]; i++) {
fileBlobs.push(reader.readAsBinaryString(f));
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
二現在你有內容作爲二進制字符串。您可以使用文件API來存儲文件在本地的方式,你可以在以後使用的FileWriter和FileSaver接口http://dev.w3.org/2009/dap/file-system/file-writer.html
var bb = new BlobBuilder();
bb.appendfileBlobs.(fileBlobs[0]);
window.saveAs(bb.getBlob(), "test_file");
三你需要做一個Ajax請求通過該斑點對服務器的訪問,跟蹤多少上傳完成。 http://www.w3.org/TR/XMLHttpRequest/#the-upload-attribute。它看起來不像跟蹤進度可以在客戶端上完成。您可能必須輪詢服務器以獲取實際進度。知道從何處開始中斷上傳的一種可能的解決方案是使用上傳ID,並且當您重新啓動上傳時,可以詢問服務器上傳了多少文件。
對不起,我不能提供完整的答案,但這不是一個簡單的問題。我給你的步驟應該帶你走向正確的方向。
@JuanMendes ..所以有無論如何做這個暫停/恢復功能,除了使用Java /閃存?我認爲HTML5具有FileAPI,所以我認爲我們可以通過html – Harts 2012-02-15 21:34:36
@ user1096900來完成。看看我修改後的答案。 – 2012-02-16 00:00:58
就像你不能在幾天內提交一個HTTP請求一樣,你也不能用文件上傳來完成。該協議不會允許它。因此,整個努力是徒勞的。
但我們可以欺騙它嗎?使用HTML5 File API中的片段上傳部分 – Harts 2012-02-15 21:29:20
HTML5的強大功能將永遠無法覆蓋HTTP指向的內容。該協議由服務器設置,而不是客戶端。 – 2012-02-15 21:32:55
據我所知,這是不可能的,因爲Javascript只能訪問通過file
輸入或拖放共享的文件。
不管怎樣,你將無法重新啓動文件上傳。 – ceejayoz 2012-02-15 21:18:46
是否有任何其他的編程語言,能夠重新啓動文件上傳除了java .. – Harts 2012-02-15 21:25:56
任何可以做到這一點的東西都必須有某種插件。 – ceejayoz 2012-02-15 22:18:41