我有excel文件abc.xls,並使用命令提示符將其重命名爲abc.doc。 我的要求是:我想上傳一個正確的doc文件,但是在那裏我只能檢查上傳文件的MIME類型,這是不夠的。我想在上傳doc文件之前確認它是一個文檔,並且不允許用戶上傳abc.doc文件,因爲它不是一個doc文件,它是一個excel文件。如何在通過網頁上傳文件之前閱讀word文檔
回答
在上傳之前,您可能需要一個ActiveX對象來訪問客戶端系統上的文件內容。檢查與JavaScript的字節數組找到它是否是一個真正的文檔可能證明有趣的,雖然:-) 編輯:
function CheckWordDoc(filepath){
var fso, f, ts, s;
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.getFile(filepath);
ts = f.OpenAsTextStream(ForReading, TristateUseDefault);
while (!ts.AtEndOfStream) {
s = ts.ReadLine();
if (s.indexOf("Word.Document.8") != -1) {
ts.Close();
return true;
}
}
ts.Close();
return false;
}
http://www.piclist.com/techref/language/asp/vbs/vbscript/jsmthopenastextstream.htm http://msdn.microsoft.com/en-us/library/ hwfw5c59%28V = vs.85%29.aspx
從大小我們不能決定這是適當的文檔文件 – baviskarss 2012-03-02 10:40:35
我知道。這就是爲什麼我說檢查字節數組是否真的是一個真正的doc文件將會很有趣......舊的doc文件在結尾處似乎具有類似於「Word.Document.8」的內容。 docx文件是壓縮的xml,偶爾會有「word /」文本定義節點......但是現在大多數瀏覽器都默認阻止ActiveX,因此我真的推薦上傳文件並檢查服務器上的字節,然後將其保存到磁盤。 – Elementenfresser 2012-03-03 08:04:08
因爲OP在評論中寫的:
你是在錯誤的軌道在這裏,驗證應該總是發生在服務器端,您可以添加額外的驗證在客戶端,但它不是必需的。你必須爲一個簡單的理由這樣做:
客戶可以隨時規避客戶端驗證方法,因爲客戶端是完全在其控制下。因此,即使您實施您的驗證方法來檢查其文檔或Excel文檔,不良用戶總是可以向您發送禁用驗證的發佈請求,並且您將獲得Excel文檔或病毒等。
這是一個核心的web編程原則:永遠不要相信輸入數據,你不能僅在客戶端驗證!
其次,您的驗證在服務器上很容易完成。所以你應該上傳任何文件(檢查文件擴展名&大小),然後在服務器上驗證!
- 1. 通過互聯網在python上閱讀文本文件
- 2. 通過網頁上傳大文件
- 3. 在通過http上傳文件之前壓縮文件
- 4. 如何在閱讀文件之前更新文件的內容?
- 5. 如何閱讀非IE瀏覽器上的word文檔
- 6. 如何通過C#閱讀pdf文件?
- 7. 閱讀UWP中的MS WORD文檔
- 8. Word文檔的閱讀索引(目錄)
- 9. 閱讀C#中的word文檔
- 10. 閱讀java中的微軟word文檔
- 11. 閱讀並顯示Word文檔
- 12. 閱讀Word文檔的Java庫
- 13. 閱讀上傳zip文件
- 14. 如何在GUI程序運行之前閱讀文本文件
- 15. 如何閱讀Microsoft Word文檔中的彩色文本
- 16. 如何在PHP中閱讀Word,Excell和PDF文檔?
- 17. 如何在動態網站上輕鬆閱讀xls文檔?
- 18. 如何使用Lua上傳文件(通過網頁)?
- 19. 如何閱讀Javascript文檔?
- 20. 使用Office Word與PHP閱讀文檔文件
- 21. 通過網頁編輯word文檔的方式
- 22. 如何將當前活動的Word文檔中通過的OpenXML
- 23. 如何確保上傳的文件是MS Word文檔?
- 24. 如何通過Google Data API將文件上傳到Google文檔?
- 25. 如何在matlab中讀取word文檔
- 26. 如何在asp.net中讀取word文檔
- 27. 在網頁中編輯word文檔
- 28. Android從網頁上閱讀文本
- 29. 製作Word文檔嵌入在網頁編輯或只讀
- 30. 如何閱讀來自apache poi的word文檔中的註釋?
可能的重複http://stackoverflow.com/q/71944/745359 – wintersolutions 2012-03-02 08:24:15
爲什麼你需要客戶端驗證?如果你不相信輸入,你必須再次在服務器上檢查它。我在問題鏈接中解決的解決方案如何? – wintersolutions 2012-03-02 16:59:09
如果我打開上傳的文件,實際上不是doc文件,它會在ms字中打開時出現損壞的文件等錯誤。所以我正試圖避免這個未來的問題。 – baviskarss 2012-03-03 05:35:01