фильтровать тип файла с помощью элемента управления загрузкой файлов - PullRequest
10 голосов
/ 24 марта 2010

как отфильтровать тип файла с помощью элемента управления загрузкой файлов в asp.net & c # .net

например, при нажатии кнопки обзора элемента управления загрузкой файлов должен открыться диалог просмотра файлов только с файлами Excel.

как это возможно

Ответы [ 6 ]

9 голосов
/ 01 августа 2011

это ответ с другого форума

Я думаю, что это легко реализовать, если вы используете C # (или VB, net) и контроль загрузки файлов .net. Вы можете определить типы файлов в массиве "allowExtensions".

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;
}
8 голосов
/ 10 ноября 2016

Работает отлично!

<asp:FileUpload ID="FileUpload1" runat="server" accept=".xls, .xlsx"/>
2 голосов
/ 29 октября 2014

Я ссылаюсь на пост # ASP.NET - Ограничение загрузки файлов доступными типами файлов

Использование RegularExpressionValidator может легко решить проблему. Для проверки расширения больше не требуется серверный код. Скопируйте и вставьте этот код

<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>
1 голос
/ 24 марта 2010

Я думаю, что это невозможно с <input type="file" control.

Я слышал о SWFUploader, который позволяет определять расширения для файлов для загрузки, но это компонент на основе флэш-памяти.

И даже если вы используете SWFUploader, ничто не помешает вам набрать *.* и выбрать файл для загрузки.

0 голосов
/ 19 июля 2017

при использовании угловой загрузки файлов, таким образом вы можете передать фильтры загрузчику

.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;
    }
});
0 голосов
/ 24 марта 2010

Вы можете использовать C1Upload из ComponentOne, чтобы сделать это. Он поддерживает проверку типа и размера файла. Имейте в виду, что вам также необходимо выполнить проверку на сервере, поскольку расширения файлов можно легко изменить, чтобы они не соответствовали их фактическому типу. Это стандарт в любой практике проверки: проверка на уровне пользовательского интерфейса, затем проверка на уровне BL и предпочтительно проверка на уровне DL. Вот демонстрация ASP.NET AJAX загрузки элемента управления со встроенной проверкой.

Еще одна интересная особенность этого элемента управления: поддерживает несколько загружаемых файлов , а показывает ход загрузки !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...