2011-09-05 43 views
4

我正在製作一個用於識別某些文件類型的在線工具。我需要從文件頭中訪問一些字節值來執行此操作。如何從網頁讀取客戶端文件頭?

用戶選擇客戶機上的文件。不知何故,我需要從文件中獲取關鍵字節值,然後在服務器端數據庫中查找這些值以對文件進行分類。

如何從客戶端文件讀取字節?

我知道我可以讓用戶上傳文件到服務器,但是這些文件非常大,而且我只需要幾個字節,所以上傳整個文件會很慢並且很浪費。

我可以以某種方式上傳文件的一部分?看起來很難取消HTML表單上傳,取消後文件部分不可用。它是否正確?

是否有可能在javascript中讀取文件?我用google搜索了這個,但答案不清楚。我已經讀過,它可能與一個Java小程序,但只有當小程序被簽名。

還有其他的方法嗎?

回答

3

您可以使用html5,但需要在舊版瀏覽器上使用Flash或其他非JavaScript方法備份。

http://www.html5rocks.com/en/tutorials/file/dndfiles/

+0

謝謝卡爾。有什麼瀏覽器支持這個列表嗎? – Sugrue

+0

我會推薦Flash,大多數用戶安裝它,遠遠超過HTML5 File API。雖然你可以,如果你只想讓Flash將它發回給Javascript,並且每當有可用時都使用Flash/HTML5。 – Andreas

+0

好的鏈接:http://www.thebuzzmedia.com/html5-drag-and-drop-and-file-api-tutorial/ – Sugrue

1

所以,如上所述,您必須使用非JavaScript的方法。但是這些方法中的每一個都有一些減號。 FLASH - 與代理服務器不兼容。特別糟糕。當然,你可以使用flash來獲取文件的base64代碼並將其提供給js。在這種情況下,這將是工作的重點。 Java Applet - greate工作但不是很多用戶擁有JVM或JVM版本可能不是sasme(但是如果您將使用JDK1.4或1.5,則不成問題)。 ActiveX - 僅在IE和Windows上工作 HTML5文件Api - 不是跨瀏覽器的解決方案。只會在最後一個瀏覽器上工作,而不是全部。

當然更好的使用服務器端 - 以php爲例,getmimetype等功能。

但我可以手動更改我的文件的標題。例如,我可以從jpeg或png添加到php文件頭中 - 並且您的腳本會被認爲是圖像。

所以這是不好的解決方案:使用標題。對於檢查文件類型可能簡單地使用信任文件的MIME類型的用戶和通過文件擴展名生成圖標

+0

感謝您的回覆。我的文件是視頻,因此大小在10MB-1GB的範圍內。除非我可以上傳第一個1kb(標題),否則上傳到serverside不是一個選項。任何方式只上傳文件的一部分? – Sugrue

相關問題