使用文件上载控件过滤文件类型

时间:2010-03-24 10:23:34

标签: c# asp.net file-upload

如何使用asp.net&中的文件上传控件过滤文件类型C#.NET

例如,单击文件上传控件的浏览按钮,它应该只打开excel文件类型的浏览文件对话框。

怎么可能

6 个答案:

答案 0 :(得分:9)

这是其他论坛的答案

如果您使用C#(或VB,net)和.net文件上载控件,我认为很容易实现它。您可以在arraylist“allowedExtensions”中定义文件类型。

string upload_Image(FileUpload fileupload, string ImageSavedPath)
{
    FileUpload fu = fileupload;  
    string imagepath = "";
    if (fileupload.HasFile)
    {
        string filepath = Server.MapPath(ImageSavedPath);  
        String fileExtension = System.IO.Path.GetExtension(fu.FileName).ToLower();
        String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg" };
        for (int i = 0; i < allowedExtensions.Length; i++)
        {
            if (fileExtension == allowedExtensions[i])
            {
                try
                {
                    string s_newfilename = DateTime.Now.Year.ToString() +
                        DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() +
                        DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() +                           DateTime.Now.Second.ToString() +  fileExtension; 
                        fu.PostedFile.SaveAs(filepath + s_newfilename);

                   imagepath = ImageSavedPath + s_newfilename;
               }
               catch (Exception ex)
               {
                   Response.Write("File could not be uploaded.");
               }

           }

       }

   }
   return imagepath;
}

答案 1 :(得分:8)

完美无缺!

<asp:FileUpload ID="FileUpload1" runat="server" accept=".xls, .xlsx"/>

答案 2 :(得分:2)

我指的是帖子#ASP.NET - Limit file upload available file types

使用RegularExpressionValidator可以轻松解决问题。不再需要服务器端代码来检查扩展。复制&amp;粘贴此代码

<asp:RegularExpressionValidator ID="uplValidator" runat="server"   

  ControlToValidate="FileUpload1" ErrorMessage=".mp3, .mp4 & wma formats are allowed"

 ValidationExpression="(.+\.([Mm][Pp][3])|.+\.([Mm][Pp][4])|.+\.([Ww][Mm][Aa]))">

</asp:RegularExpressionValidator>

答案 3 :(得分:1)

我认为<input type="file"无法控制。

我听说SWFUploader允许定义要上传的文件的扩展名,但这是一个基于闪存的组件。

即使您使用SWFUploader,也不会阻止您输入*.*,并选择要上传的任何文件。

答案 4 :(得分:0)

您可以使用ComponentOne中的 C1Upload 来执行此操作。它支持文件类型和大小验证。请记住,您还需要在服务器上进行验证,因为文件扩展名很容易更改为与实际类型不匹配。这是任何验证实践中的标准:在UI层验证然后在BL层验证,并且最好在DL验证。以下是内置验证ASP.NET AJAX upload control的演示。

此控件的另一个很酷的功能是支持多个上传文件显示上传进度

答案 5 :(得分:0)

使用Angular File Upload时,这种方式可以将过滤器传递给uploder

.html文件

<input type="file" nv-file-select uploader="uploaderImages" />

.js文件:

$scope.uploaderImages.filters.push({
    name: 'imageFilter',
    fn: function (item/*{File|FileLikeObject}*/, options) {
        var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
        return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
    }
});