2012-04-25 86 views
1

我給用戶上傳這樣
在JavaScript中驗證除擴展名外的pdf文件?

<form action="#" onsubmit="return Checkfiles(this);"> 
    <center><input type="file" id="filename"> 
    <input type="submit" value="Go!"></center> 
    </form> 

文件的選項,當用戶上傳的文件,我使用javascript函數

​​

Evertything工作正常與它下面的驗證文件。
但我想通過其他方式驗證文件,而不僅僅是通過其擴展名
我會給出這樣做的理由。我將一個圖像文件重命名爲image.pdf,現在它的格式爲pdf格式,但無法打開。

所以我想確切地驗證一個pdf文件。除了擴展名之外,還有其他方法可以檢查嗎?
編輯
我想在服務器端使用jsp頁面進行驗證。那我該怎麼做呢?
感謝ADVANCE :)

回答

1

據我所知,檢查pdf是否實際上是pdf只能在服務器端完成。你可以嘗試用IText或類似的東西打開它;我敢打賭,當你嘗試打開或修改其他東西,然後是PDF時,會引發某種異常。

+0

我編輯了我的問題。檢查並試圖幫助我在那部分請 – suraj 2012-04-25 05:59:09

+0

我想你曾經驗證過提交的表單在服務器端。我不知道你是否正在使用某種類似Struts,Spring MVC或其他類似的框架,但是無論你在服務器端通常驗證一個提交的表單,這就是你應該驗證PDF的地方。就像我說的,你可以通過像IText這樣的東西來打開它。也許開放是不夠的;有可能你只會注意到在嘗試使用它之後它不是一個有效的PDF;讀它或改變它。如果它無效,那麼只需重新顯示錶單就像例如字段值太長時那樣。 – Tom 2012-04-25 07:01:02

1

任何一種JavaScript驗證只是爲了用戶的舒適。一切都應該在服務器端進行驗證。用戶可以輕鬆地禁用或修改任何JavaScript代碼。

無論如何。你不能在javascript中檢查文件內容。

在PHP中,您可以使用http://www.php.net/manual/en/function.finfo-file.php來檢測文件的內容。大多數其他語言應該具有相似的功能。

+0

@Maris Kiselovs我正在使用jsp頁面進行上傳,所以有什麼辦法可以在同一jsp頁面中使用服務器端代碼驗證內容 – suraj 2012-04-25 05:47:23

+0

@suraj聽起來像是一個新問題。 – 2012-04-25 05:48:58

+0

@Maris其實這就是我真正想知道的。有沒有辦法做到這一點 – suraj 2012-04-25 05:50:51

0

要驗證在JavaScript中的文件類型,這裏有一些方法:

// Your way: getting the extension and checking it. 
// I suggest this way instead of using indexOf: 
var ext = fileName.split('.').reverse()[0] 
// Splits by '.', reverse the array, and returns the first element 

// Another way: checking the type of the file 
if (fup.files[0].type === 'application/pdf') { 
    console.log('It is validated!') 
} 

活生生的例子:http://jsbin.com/akati3/2感謝https://stackoverflow.com/a/4581316/851498

但是,你應該真的驗證此服務器端爲他人說過。