Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用jQuery将文件从文件输入传递到控制器?_Jquery_Asp.net Mvc_File Upload_Httppostedfilebase - Fatal编程技术网

是否可以使用jQuery将文件从文件输入传递到控制器?

是否可以使用jQuery将文件从文件输入传递到控制器?,jquery,asp.net-mvc,file-upload,httppostedfilebase,Jquery,Asp.net Mvc,File Upload,Httppostedfilebase,我正试图将一个文件作为HttpPostedFileBase传递给我的控制器,这样我就可以解析该文件并将信息传递回页面。例如,我希望允许用户导入vCard,并让它自动填充联系人创建表单PartialView 我希望通过传入文件,填充我的模型,然后返回要在页面上显示的表单的部分视图来完成此操作。我尝试过下面这样的jQuery,但我永远无法让我的HttpPostedFileBase正确通过(始终为null)。请记住,一旦发布,我需要访问文件的InputStream var file = "files=

我正试图将一个文件作为HttpPostedFileBase传递给我的控制器,这样我就可以解析该文件并将信息传递回页面。例如,我希望允许用户导入vCard,并让它自动填充联系人创建表单PartialView

我希望通过传入文件,填充我的模型,然后返回要在页面上显示的表单的部分视图来完成此操作。我尝试过下面这样的jQuery,但我永远无法让我的HttpPostedFileBase正确通过(始终为null)。请记住,一旦发布,我需要访问文件的InputStream

var file = "files=" + $("#fileInput").files[0];
$.post("/Contacts/UploadContact/", file, function (returnHtml) {
    alert(returnHtml);
    $("#contactContainer").html(returnHtml);
});
是否可以通过jQuery将文件作为HttpPostedFileBase发布到我的控制器?

无需使用“jQuery”即可获得相同的结果,只需使用“XMLHttpRequest”`
    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);
   });   
    });
例子: **Index.cshtml** $('#fileInput')。在(“change”,函数(){ var xhr=new XMLHttpRequest(); var VideofileS=newformdata($('form').get(0)); xhr.open(“POST”、“/Contact/UploadContact/”; 发送(视频文件); xhr.addEventListener(“加载”),函数(事件){ 警报(事件、目标、响应); },假); }); });
非常棒的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]);

Ajax文件上传并不简单。也许这个插件可以帮助你:它必须是AJAX吗?更易于在应用程序中使用enctype=“multipart/form data”form@avrono这是真的,但由于他使用的是jQuery
post()
,我认为他需要一个AJAX解决方案,但我已经回答了这个问题,问题被删除了,我太懒了,无法重新发布整个frikkin内容(它太大了)今晚再次…长话短说,是的,你可以,但它很复杂,ajax fileApi还没有得到广泛支持。用文件上传制作一个表单(经典的东西)…现在将其粘贴在iframe中,并通过JS控制iframe。适用于所有平台,包括移动平台(ios、android…)@如果你是对的,如果可能的话,我希望它是Ajax。但是,如果这证明是一个非常痛苦的问题,我可以做一个例外+1,这是我发现的最简洁、非iFrame文件上传示例。谢谢!在这种情况下,我如何从controller返回值。比如返回Json(新的{success=true,returnedPath=UIFilePath},JsonRequestBehavior.AllowGet);FormData()仅适用于IE10+,如果我们能让它适用于IE9,有什么办法吗+