фильтр типа файла с контролем загрузки файла

как фильтр типа файла с файл загрузить контроль в asp.net & c#.net

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

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

6 ответов


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

Я думаю, что это легко понять, если вы используете C# (или VB,net) и .net fileupload управления. вы можете определить типы файлов в 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;
}

Он прекрасно работает!

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

я ссылаюсь на сообщение # ASP.NET -ограничить загрузку файлов доступных типов файлов

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

<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>

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

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

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


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

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


при использовании угловой загрузки файла, таким образом, вы можете передавать фильтры в 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;
    }
});