asp.net mvc c#检查文件类型和文件大小

时间:2010-10-22 12:33:14

标签: c# asp.net-mvc

在asp.net mvc c#controllers中检查文件类型和大小的最佳方法是什么?

4 个答案:

答案 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);