Проверьте размер файла перед загрузкой - PullRequest
3 голосов
/ 28 марта 2012

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

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

Ответы [ 3 ]

1 голос
/ 18 апреля 2013

.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 содержит количество байтов в опубликованном файле

Это позволит вам иметь поле для загрузки файла.

НаASP.NET WebForms Solution:

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

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

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

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

0 голосов
/ 26 августа 2016

Вы можете достичь с помощью 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('');
                            }

                        });

                    });
0 голосов
/ 18 апреля 2013

Когда речь идет о браузере, поддерживающем 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...