0
 $(".btnSavePurpose").click(function(e){
       e.preventDefault();
       var item=$(this);
       $.post("url", 
                         item.closest("form").serialize(), function(data){
           if(data.Status=="Success")
           {
             //Let's replace the form with messsage                
             alert("Updated Successfully");
           }    
           else
           {
              alert(data.ErrorMessage);
           }

       });   
    });   

我想使用 ajax 发布我的表单。我使用了 $post() jquery 函数。我正在获取所有没有上传文件的数据。我已将 enctype 添加到表单中。我得到 Request.File["file"] null。我如何检索上传的文件

<form method="post" id="profile-form" enctype="multipart/form-data">
   <table>
     <tr>
        <td style="width: 25%">
         Profile Name<span class="Require">&nbsp;*</span>
         </td>
         <td style="width: 10%">
          :
         </td>
          <td style="width: 70%">@Html.TextBoxFor(m => m.ProfileName, new { @class = "formTextBox" })
          </td>
   </tr>
   <tr>
       <td>
          My Ocupation<span class="Require">&nbsp;*</span>
       </td>
       <td>
       :
       </td>
       <td>@Html.TextBoxFor(m => m.Ocupation, new { @class = "formTextBox" })
       </td>
  </tr>
  <tr>
      <td>
         Upload New Profile Photo
      </td>
      <td>
         :
      </td>
      <td>
            <input type="file" name="file" id="file" runat="server" accept="gif|jpg|png|jpeg|bmp" />                                                       
      </td>
  </tr>
 </table>
 <input type="submit" id="btnSubmit" value="Submit" class="formButton" />
 </form>
4

2 回答 2

0

试试这个例子
html

<form id="form1" runat="server" enctype="multipart/form-data">
 <input type="file" id="myFile" name="myFile" />
 <asp:Button runat="server" ID="btnUpload" OnClick="btnUploadClick" Text="Upload" />
</form>

。网

 protected void btnUploadClick(object sender, EventArgs e)
    {
        HttpPostedFile file = Request.Files["myFile"];

        //check file was submitted
        if (file != null && file.ContentLength > 0)
        {
            string fname = Path.GetFileName(file.FileName);
            file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname)));
        }
    }

如何编写 js 看这里 使用 jQuery 通过 ajax 从 multipart/form-data 发送数据

于 2012-09-25T10:41:12.763 回答
0

恐怕您要尝试做的事情并非如此简单。您无法使用 JavaScript 读取文件。您无权访问文件系统。这意味着您不能使用 AJAX 发布文件。(嗯,可以用 HTML5 来完成 - 请参阅:如何异步上传文件?

有很多方法可以解决这个问题,你可以自己快速敲定的方法是将文件发布到 iframe 中。我建议为此使用 jQuery 插件,例如http://blueimp.github.com/jQuery-File-Upload/

于 2012-09-25T10:43:01.303 回答