使用jQuery上传多个文件

时间:2014-10-31 06:49:44

标签: asp.net-mvc jquery-file-upload

我正在通过AJAX / JSON上传mvc中的多个文件,

$(document).ready(function () {
$('#fileupload').fileupload({
    dataType: 'json',
    url: '/eSignature/FileUpload/UploadFiles',
    autoUpload: true,
    done: function (e, data) {
        $('.file_name').html(data.result.name);
        $('.file_type').html(data.result.type);
        $('.file_size').html(data.result.size);
    }
}).on('fileuploadprogressall', function (e, data) {
    var progress = parseInt(data.loaded / data.total * 100, 10);
    $('.progress .progress-bar').css('width', progress + '%');
});

});

以下是我的控制器逻辑

public ActionResult UploadFiles()
    {
        List<UploadFilesResult> model = new List<UploadFilesResult>();
        int count = Request.Files.Count;

        foreach (string file in Request.Files)
        {
            HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
            if (hpf.ContentLength == 0)
                continue;

            string savedFileName = Path.Combine(Server.MapPath("~/App_Data"), Path.GetFileName(hpf.FileName));
            hpf.SaveAs(savedFileName);

            model.Add(new UploadFilesResult()
            {
                Name = hpf.FileName,
                Length = hpf.ContentLength,
                Type = hpf.ContentType
            });

        }

        return View();

    }

我的问题是迭代Request.Files;虽然我上传了多个文件,但一次只显示一个文件。

上传第一个文件后;然后再次调用该方法是由它自己完成的;这里显示所有文件的第二个文件名等等?为什么会这样?

因为,我正在for循环中更新我的模型,其中只存储了最后一个值。

我在这里失踪的任何东西?????????????

1 个答案:

答案 0 :(得分:0)

为什么你要创建自己的,当我们有第三方插件做同样的事情时,试试Jquery Uploadify