Подтвердить что ты не робот

Jquery file upload plugin - выбранное имя файла не отображается

Я использую плагин загрузки файла jquery (basic) для загрузки одного файла за раз. Плагин отлично работает, и я могу видеть файлы, сбрасываемые в правильном каталоге, все хорошо! Однако, когда я выбираю файл, имя (Chrome)/path (IE) выбранного файла не отображается, вместо этого оно просто отображает "Нет выбранного файла". Как я могу изменить его, чтобы отобразить имя выбранного файла? Мой код:

Script:

$(function () {
            $('#fileupload').fileupload({
                dataType: 'json',
                url: '@Url.Action("Index", "Home")',
                add: function (e, data) {
                    data.submit(); 
                },
                progress: function (e, data) {
                    var progress = parseInt(data.loaded / data.total * 100, 10);
                    $('#progress .bar').css('width', progress + '%');

                },
                done: function (e, data) {
                    $('<p/>').text(data.files[0].name).appendTo(document.body);                        
                }
                //multipart: false
            });               

        });

HomeController:

[HttpPost]
    public ActionResult Index(HttpPostedFileBase files)
    {           
        return Json(files.FileName);
    }    

Указатель:

<input id="fileupload" type="file"  name="files"/>
<div id="progress" style="width: 250px">
    <div class="bar" style="width: 0%;"></div>
</div>
4b9b3361

Ответ 1

Передайте следующие аргументы вызову fileupload:

$('#fileupload').fileupload({

    formData:{extra:1},
    autoUpload: false,
    url: "uploader.php",
    replaceFileInput:false,
    fileInput: $("input:file")
});

replaceFileInput:false предназначен для отображения имени выбранного файла

Ответ 2

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

HTML:

<!--Don't forget to wrap your form elements inside a form-->
<input id="fileupload" type="file" name="files" />

<ul id="selected-files">
    <!--File names will be displayed here-->
</ul>

<div id="progress" style="width: 250px">
    <div class="bar" style="width: 0%;"></div>
</div>

Похоже, что у вас большая часть вашей работы script (основанная на том, что вы сказали); поэтому мы будем менять только некоторые вещи. Сначала мы переместим команду data.file (после ее настройки) в функцию add: вместо... далее, мы создадим несколько пользовательских vars для отображения имен файлов с некоторым порядком (и будем способный упростить их стиль).

Script:

$(function () {

    var ul = $('#selected-files');

    $('#fileupload').fileupload({
        dataType: 'json',
        url: '@Url.Action("Index", "Home")',

         add: function (e, data) {
             var selectedFiles = $('<li class="file-name"><p></p></li>');
             selectedFiles.find('p').text(data.files[0].name);
             data.context = selectedFiles.appendTo(ul);

             data.submit(); 
         },

         progress: function (e, data) {
             var progress = parseInt(data.loaded / data.total * 100, 10);
             $('#progress .bar').css('width', progress + '%');
         }

         //multipart: false

     });               

});

Я должен признать, что я бы не подумал об этом самостоятельно... благодаря учебник Мартина Ангелова о загрузке файлов с помощью jimp -file-upload плагин.;)

Надеюсь, это поможет!