使用$.Post或$.Ajax传递HttpPostedFileBase类型

3

我在我的控制器中有这个操作。

    public ActionResult Upload(HttpPostedFileBase fileData)
    {
        //code for uploading goes here.
        return View();
    }

有没有办法使用$.post或$.Ajax访问此操作? 在我的视图中,我有以下代码。
<input type="file" name="fileData" id="fileData" multiple/>
<button>Upload</button> 

我首先尝试使用这段代码

$("button").on("click",function(){
   $.post('@Url.Action' + $(".filedata").val(),function(data){
      console.log(data);
   });
});

但是,当我尝试在我的“上传”操作上设置断点时,“filedata”变量的值为null

我不知道问题出在哪里。希望你们能帮帮我。


你不能使用Ajax这种方式上传文件。你必须使用一个<iframe/>或其他异步上传方法,比如http://www.plupload.com/或http://code.google.com/p/swfupload/。 - DanielB
那么,最好的方法是什么? - Napaka Pangit Q Talga
啊,关于 swfupload,它和 uploadify 有关系吗?我尝试了 uploadify,一切都正常。我可以使用它来访问我的操作。但问题在于我的会话。我的会话变量的值变为空或 null,这就是为什么我移除了我的 uploadify 的原因。 - Napaka Pangit Q Talga
是的,那個閃爍的錯誤很煩人。你必須手動將這些值添加到 uploadify 回傳中。授權 cookie 也可能會有問題。 - DanielB
1个回答

0
你需要一个IFRAME来使用文件进行帖子发布。
像这样:
<iframe id="targetUpload" name="targetUpload"></iframe>

在表单中,您将目标设置为 iframe。

<form target="targetUpload" name="file" runat="server" method="post" id="file" enctype="multipart/form-data" action="@Url.Content("~/Controller/Action")">

还有一个提交按钮

<input type="Submit" value="Upload">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接