我有一个带有文件输入的页面,用户应在该页面上载一个excel文件,以将大量记录插入到特定表中。我发现此Javascript代码可帮助验证插入的文件是否具有所请求的Excel扩展名之一:
var hash = {
'xls': 1,
'xlsx': 1,
};
function checkExtension() {
var filename = $("#uploadFile").val();
var re = /\..+$/;
var ext = filename.slice(filename.lastIndexOf(".") + 1).toLowerCase();
if (hash[ext]) {
return true;
} else {
alert("Invalid file type. Please insert a valid Excel file.");
event.preventDefault();
return false;
}
}
但是,此代码在验证文件扩展名方面效率很高,它不会验证文件内容,从而使某人可以上传具有不同内容类型的文件,但其扩展名重命名为“ .xls”或“ .xlsx” 。如何解决这种情况?
答案 0 :(得分:0)
您可以通过3个步骤正确验证Excel文件
在Asp.net中,FileUploader控件具有一个称为“接受” <asp:FileUploader accept='.xls,.xlsx'/>
的属性。默认情况下,它将允许用户仅选择xls和xlsx扩展文件。但是,用户仍然可以选择“所有文件”选项以上传另一个文件。
验证文件名的扩展名是否包含来自Javascript的.xls以及背后的代码。
使用Aspose.Cells dll并尝试获取xls文件,如果该文件不是xls或xlsx,它将返回异常'InvalidFileFormatException'。