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