2012-03-28 5 views
3

Мне нужно проверить файл, который необходимо загрузить на сервер. Прежде чем загружать его, необходимо выполнить проверку. т.е. проверка завершена на стороне клиента. Эта задача должна быть выполнена на веб-странице ASP.NET MVC3. Он также должен работать со всеми браузерами. IE9,8,7/FF/хром. Я узнал, что IE не имеет API FileReader.Подтвердить размер файла перед загрузкой

Мой вопрос: как проверить размер файла перед загрузкой на веб-страницу MVC3.

ответ

1

.Net MVC Решение:

Я использую тип данных HttpPostedFileBase

В вашей Views > Shared папки, создайте новую папку под названием "EditorTemplates" и использовать это:

@model HttpPostedFileBase 

@Html.TextBox("", null, new { type = "file" }) 

Затем передаю этот объект HttpPostedFileBase с контроллера на Метод, который выполняет следующие действия:

public Files Upload(HttpPostedFileBase files) 
{ 
    if (files.ContentLength > 0) { 

    ..... 
} 

Свойство ContentLength на классе HttpPostedFileBase содержит количество байтов в файле публикуемую

Это сделает это так, у вас есть UPLOADING окно доступа к файлу.

На ASP.NET WebForms Решение:

<asp:FileUpload ID="fuPictures" runat="server" /> 

Сделать кнопку с событием OnClick или OnCommand, что делает что-то вроде этого:

if (fuPictures.HasFile == true) 
{ 
    int fileSize = fuPictures.FileBytes; 
} 

Это даст вам размер файла , Надеюсь это поможет.

+0

@Praveen делает это поможет вам? – Termato

0

Когда речь заходит для браузера, который поддерживает HTML 5, это может быть легко достигнуто с простым JavaScript:

Html Синтаксис

<input type="file" id="myFile" /> 

синтаксис Javascript

//gets the element by its id 
var myFile = document.getElementById('myFile'); 

//binds to onchange event of the input field 
myFile.addEventListener('change', function() { 
    //this.files[0].size gets the size of your file. 
    alert(this.files[0].size); 

}); 

Но, когда дело приходит к более старым браузерам (и мы все смотрим на вас, Internet Explorer), единственный способ сделать это на стороне клиента - использовать ActiveX:

var myFile = document.getElementById('myFile'); 

var myFSO = new ActiveXObject("Scripting.FileSystemObject"); 
var filepath = myfile.file.value; 
var thefile = myFSO.getFile(filepath); 
var size = thefile.size; 
    alert(size + " bytes"); 
0

можно достичь с помощью JQuery:

#
<span> 
<b>Attachment</b> (8 MB only)<label id="attached" style="color:red; margin-left:5px"></label> 
</span> 
<input type="file" id="Attachment" name="Attachment" class="admin_textfeildmedium" value="" style="width:551px" accept="image/*"> 
#
jQuery(document).ready(function() { 


jQuery('#Attachment').bind('change', function() { 
          //fileUpload = 0; 
          var iSize = (this.files[0].size/1024); 
          if (iSize/1024 > 1) { 
           if (((iSize/1024)/1024) > 1) { 
            fileUpload = 0; 
           } else { 
            iSize = (Math.round((iSize/1024) * 100)/100); 
            if (iSize <= 8) { 
             fileUpload = 1; 
            } else { 
             fileUpload = 0; 
            } 
           } 
          } else { 
           fileUpload = 1; 
          } 
          if (fileUpload == 0) { 
           // alert("Your attachment exceeded 8MB."); 
           jQuery('#attached').html('Your attachment exceeded 8MB.'); 
           jQuery('#Attachment').val(''); 
          } 

         }); 

        }); 
Смежные вопросы