Добавить фильтр в FileUpload Control - PullRequest
1 голос
/ 09 июня 2009

Как добавить фильтр в элемент управления загрузкой файлов в asp.net? Я хочу фильтр для файла шаблона Word (.dot).

Ответы [ 5 ]

4 голосов
/ 10 июня 2009

Вы могли бы также сделать альтернативу javascript для фильтрации на стороне сервера (вы, вероятно, тоже захотите это сделать), но это избавит клиента от необходимости тратить время на ожидание завершения загрузки, просто чтобы узнать, что это неправильно типа.

http://javascript.internet.com/forms/upload-filter.html

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

Вы также можете использовать document.forms [0] .submit (); вместо передачи ссылки на форму (так как ASP.NET действительно использует только одну форму (если вы не делаете что-то напуганное))

2 голосов
/ 09 июня 2009
        string fileName = fuFiles.FileName;

        if(fileName.Contains(".dot"))
        {
            fuFiles.SaveAs(Server.MapPath("~/Files/" + fileName));
        }
2 голосов
/ 09 июня 2009

Если вы хотите отфильтровать расширения файлов клиент / сторона с помощью стандартного селектора файлов браузера, это невозможно. Для этого вы должны использовать смешанный тип загрузки, такой как SWFUpload , основанный на флеш-загрузчике (это действительно хорошая техническая задача: она позволяет вам публиковать больше, чем файл одновременно).

Единственное, что вы можете сделать в стандартном режиме, - это отфильтровать уже опубликованный файл, и я предлагаю использовать утилиту пространства имен System.IO.Path:

if (Path.GetExtension(upFile.FileName).ToUpper().CompareTo(".DOT") == 0) 
{
    /* do what you want with file here */ 
}
1 голос
/ 13 апреля 2011

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

if (fuLogo.HasFile)
        {
            int counter = 0;
            string[] fileBreak = fuLogo.FileName.Split(new char[] { '.' });
            logo = Server.MapPath("../Images/Logos/" + fileBreak[0] + counter.ToString()+ "." + fileBreak[1]);
            if (fileBreak[1].ToUpper() == "GIF" || fileBreak[1].ToUpper() == "PNG")
            {
                while (System.IO.File.Exists(logo))
                {
                    counter++;
                    logo = Server.MapPath("../Images/Logos/" + fileBreak[0] + counter.ToString() + "." + fileBreak[1]);
                }
            }
            else
            {
                cvValidation.ErrorMessage = "This site does not support any other image format than .Png or .Gif . Please save your image in one of these file formats then try again.";
                cvValidation.IsValid = false;
            }
            fuLogo.SaveAs(logo);
        }

В основном я сначала перебираю каталог, чтобы посмотреть, существует ли файл. Если файл существует (например, picture0.gif), он увеличит счетчик (до picture1.gif). Это предотвращает перезапись изображений разными пользователями, если их изображения имеют одинаковые имена.

1 голос
/ 09 июня 2009

Проверьте имя файла загруженного файлового сервера:

FileUpload1.PostedFile.FileName

Если вы не хотите использовать java или что-то похожее на клиенте, вы действительно мало что можете сделать для фильтрации загруженных файлов перед их отправкой на сервер.

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