【问题标题】:Passing a HttpPostedFileBase type using $.Post or $.Ajax使用 $.Post 或 $.Ajax 传递 HttpPostedFileBase 类型
【发布时间】:2012-08-02 09:18:33
【问题描述】:

我的控制器中有这个动作。

    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 以这种方式上传文件。您必须使用&lt;iframe/&gt;或其他asycn上传方法,如plupload.comcode.google.com/p/swfupload
  • 那么,最好的方法是什么?
  • 啊,关于swfupload,和uploadify有关系吗?我试过uploadify,一切正常。我可以使用那个访问我的操作。但问题出在我的会议上。我的会话变量的值为空或 null,这就是我删除了 uploadify 的原因。
  • 是的,这是一个令人讨厌的 Flash 错误。您必须手动将这些值添加到 uploadify 回发中。授权 cookie 也可能存在问题。

标签: jquery asp.net-mvc razor


【解决方案1】:

您需要有一个 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">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2011-07-10
    • 2016-12-28
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多