5

我正在尝试将文件作为 HttpPostedFileBase 传递给我的控制器,以便我可以解析文件并将信息传递回页面。例如,我想允许用户导入 vCard,并让它自动填充联系人创建表单 PartialView。

我想通过传入文件,填充我的模型,然后返回表单的 PartialView 来显示在页面上。我尝试过像下面这样的 jQuery,但我永远无法让我的 HttpPostedFileBase 正确传递(始终为空)。请记住,一旦发布,我需要访问文件的 InputStream。

var file = "files=" + $("#fileInput").files[0];
$.post("/Contacts/UploadContact/", file, function (returnHtml) {
    alert(returnHtml);
    $("#contactContainer").html(returnHtml);
});

是否可以通过 jQuery 将文件作为 HttpPostedFileBase 发布到我的控制器?

4

2 回答 2

12
    Same result can be achieved without `jquery` usage, merely you can use `XMLHttpRequest`
Example:

**Index.cshtml**

    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script src="@Url.Content("~/Scripts/scripts.js")" ></script>
    <input type="file" id="fileInput" />
    <input type='button' id='go' value="go" />

 $('#fileInput').on("change", function () {      

             var xhr = new XMLHttpRequest();
             var VideofileS = new FormData($('form').get(0));
             xhr.open("POST", "/Contact/UploadContact/");
             xhr.send(VideofileS);
             xhr.addEventListener("load", function (event) {
             alert(event.target.response);
            }, false);
   });   
    });
于 2013-10-31T08:07:58.360 回答
0

很棒的 Ajax 上传功能。

如果您有多个文件上传控件,请给它们单独的 ID 并执行以下操作以上传所有这些控件。

fd.append("file1", document.getElementById('fileInput').files[0]);
fd.append("file2", document.getElementById('fileInput').files[1]);
fd.append("file3", document.getElementById('fileInput').files[2]);
fd.append("file4", document.getElementById('fileInput').files[3]);
于 2017-01-02T02:00:27.103 回答