2012-05-09 1 views
-4

я даю поле для пользователя, где он может загрузить любой файл
изображения я хочу, чтобы проверить, что файл не
должен быть более большим, то 350KB ... . как сделать это в C#как знать точный размер файла непосредственно перед загрузкой в ​​C#

   HttpPostedFileBase file = Request.Files[0]; 
       string mynewpath = Request.PhysicalApplicationPath + "Upload\\"; 
       if (file.ContentLength > 0) 
       { 
        // here i want to check that if file size is more then 350kb then i will give error 

        string[] extarray = new string[] { "image/jpeg", "image/jpg","image/png", "image/gif" }; 
        var isallowedfile = extarray.Contains(file.ContentType); 
        if (!isallowedfile) 
        { 
         ModelState.AddModelError("", "Only image files (.jpeg , .gif , .png) are accepted, please browse a image file"); 
         return View("SurveyOptions", model); 
        } 
        string filename = Guid.NewGuid() + Path.GetFileName(file.FileName); 
        file.SaveAs(mynewpath + filename); 
       } 
+0

Проверить эту ссылку http://stackoverflow.com/questions/1158007/asp-net-uploaded- файл –

+0

вы что-нибудь порекомендуете? – Ahsan

+2

Я не занимаюсь исследованиями для людей. Этот квест был задан дюжину раз только в связанных вопросах. –

ответ

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

  2. в последние браузеры на которые вы можете использовать HTML5 File API читать размер файла

Проверка JQuery filedrop плагин (https://github.com/weixiyen/jquery-filedrop), который основан на HTML5 file API

--NJ

+0

WOOHOO! Я не читал, что теперь это возможно с HTML 5. –

0

вы должны использовать Somthing так:

HttpPostedFile MyFile; 
int FileLen; 
System.IO.Stream MyStream; 
MyFileCollection = Request.Files; 
MyFile = MyFileCollection[0]; 
FileLen = MyFile.ContentLength; 

FileLen является размер файла сравнить его с любым размером вы хотите!. , ,

И IIF вы хотите получить filezize на стороне клиента, насколько я знаю, вы можете сделать это с помощью HTML-файл загрузчик:

function validateFile() 
{ 
var strFileName = document.form1.file1.value; 
var strExtName = strFileName.substring(strFileName.lastIndexOf('.')).toLowerCase(); 
alert(strFileName); 
alert(strExtName); 
var objFSO = new ActiveXObject("Scripting.FileSystemObject"); 
var e = objFSO.getFile(strFileName); 
var fileSize = e.size; 
//file size limit for 10mb 
if (fileSize > 10485760){ 
alert("maximum size of uploaded file should be less than 10 MB."); 
return false; 
} 
else 
return true; 
} 


<input type ="file" id="file1" name="file1" contentEditable="false" onchange="validateFile();" /> 
+0

Не забудьте упомянуть большой с помощью FileSystemObject. –

Смежные вопросы