我向用户提供上传类似文件的选项
<form action="#" onsubmit="return Checkfiles(this);">
<center><input type="file" id="filename">
<input type="submit" value="Go!"></center>
</form>
当用户上传文件时,我使用以下javascript函数验证文件
<script type="text/javascript">
function Checkfiles()
{
var fup = document.getElementById('filename');
var fileName = fup.value;
var ext = fileName.substring(fileName.lastIndexOf('.') + 1);
if(ext == "pdf" )
{
return true;
}
else
{
alert("Upload pdf files only");
fup.focus();
return false;
}
}
</script>
Evertything正常运转。
但我希望通过其他方式验证文件,而不仅仅是通过其扩展名
我会说明这样做的理由。我将图像文件重命名为image.pdf,现在以pdf格式重命名但无法打开。
所以我想以精确的方式验证pdf文件。除了扩展名之外,还有其他方法可以检查吗?
的修改
我想使用jsp页面在服务器端进行验证。那我该怎么做呢?
感谢ADVANCE :)
答案 0 :(得分:2)
任何类型的javascript验证仅供用户使用。一切都应该在服务器端验证。用户可以轻松禁用或修改任何JavaScript代码。
反正。你无法在javascript中检查文件内容。
在PHP中,您可以使用http://www.php.net/manual/en/function.finfo-file.php来检测文件类型的内容。大多数其他语言应该具有类似的功能。
答案 1 :(得分:2)
要在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
但是,你应该真正在服务器端对此进行验证,正如其他人所说的那样。
答案 2 :(得分:0)
据我所知,检查pdf实际上是否是pdf只能在服务器端完成。您可以尝试使用IText或类似的东西打开它;我敢打赌,当你尝试打开或修改其他内容然后修改PDF时会引发某种异常。