我创建了一个网页,我只想使用 JavaScript 上传文本文件,它工作正常。
使用下面的 JavaScript,它正在检查上传文件是否为 txt?
<script>
function checkExt() {
if(document.mainForm.myfile.value.lastIndexOf(".txt")==-1) {
alert("Please upload only .txt extention file");
return false;
}
}
</script>
<form name="mainForm">
<input type="file" name="myfile" onchange="checkExt();"/>
</form>
问题:如果我手动将文件 .exe 的扩展名更改为 .txt,那么它也会被上传,因为我只检查文件的扩展名。所以我的问题是如何防止 exe 文件(手动更改为 txt)上传。
我想停止上传强制或手动更改或重命名的exe、jar文件。
最佳答案
您需要在后端代码上验证修改后的 exe 文件是否为 txt。这是非常简单的代码。下面的程序正在检查文件是否可执行,或者 exe 文件已更改为 .txt 扩展名。
这里我们可以读取文件来验证文件是否包含字节码
import java.io.File;
import java.io.FileInputStream;
public class TestExecutableFile {
public static void main(String[] args) {
byte[] firstBytes = new byte[4];
try {
FileInputStream input = new FileInputStream(new File("[filepath]/[filename]"));
input.read(firstBytes);
// Checking file is executable
if (firstBytes[0] == 0x4d && firstBytes[1] == 0x5a) {
System.out.println("Executable File");
}else{
System.out.println("Non Executable File");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
关于javascript - 如何手动检查上传文件是txt还是修改后的扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45711994/