在asp.net mvc c#controllers中检查文件类型和大小的最佳方法是什么?
答案 0 :(得分:3)
System.IO.FileInfo [1]
有什么问题你是什么意思'类型',扩展名或mime类型。扩展显然在路径和mime类型映射我认为是在注册表中。大小是长度
[1] http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx
答案 1 :(得分:0)
要计算以下代码的文件大小将在控制器中使用:
var fileSize = objFile.size; //size in kb
fileSize = fileSize / 1048576; //size in mb
并且可以在Javascript
中检查文件类型var _validFileExtensions = [".jpg", ".jpeg", ".bmp", ".gif", ".png"];
function Validate(oForm) {
var arrInputs = oForm.getElementsByTagName("input");
for (var i = 0; i < arrInputs.length; i++) {
var oInput = arrInputs[i];
if (oInput.type == "file") {
var sFileName = oInput.value;
if (sFileName.length > 0) {
var blnValid = false;
for (var j = 0; j < _validFileExtensions.length; j++) {
var sCurExtension = _validFileExtensions[j];
if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) {
blnValid = true;
break;
}
}
if (!blnValid) {
alert("Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", "));
return false;
}
}
}
}
return true;
}
答案 2 :(得分:0)
像这样你可以获得文件的扩展名:
project - module build.gradle
这将包括一个领先的var result = JSON.parse('{"width": 100, "height": 100, "properties": { "Name": "foo", "Surname": "bar" }}');
// result.width => 100
// result.properties.Name => "foo" etc...
。
请注意,您不应该认为扩展名是正确的。
注
从string extension = Path.GetExtension(upload.FileName);
确定类型并不是非常简单。您必须假设使用.
,使用byte[]
,或者进行调查性工作,例如迭代消费各种类型,直到它不会失败等。如果这是一个内部应用程序,错误输入文件上传的后果可以在消费端减轻,恶意使用的威胁非常低,依赖于扩展可能是合理的,而不是花费其他费用。
我不确定您是否可以使用MagicStrings
使用unmanaged code
类,它是.NET Framework 4.5中BCL的一部分:
MIME
答案 3 :(得分:0)
你可以使用Myrmec来识别文件类型,这个库使用文件字节头。这个库可用于nuget&#34; Myrmec&#34;,这是repo,myrmec也支持mime类型,你可以尝试一下。代码会是这样的:
view
并获取mime类型:
// create a sniffer instance.
Sniffer sniffer = new Sniffer();
// populate with mata data.
sniffer.Populate(FileTypes.CommonFileTypes);
// get file head byte, may be 20 bytes enough.
byte[] fileHead = ReadFileHead();
// start match.
List<string> results = sniffer.Match(fileHead);