使用 jquery ajax 发布时,Httppostedfilebase 始终返回 null

Posted

技术标签:

【中文标题】使用 jquery ajax 发布时,Httppostedfilebase 始终返回 null【英文标题】:Httppostedfilebase always returns null when posted with jquery ajax 【发布时间】:2020-01-14 23:29:51 【问题描述】:

我正在开发一个 mvc 应用程序并希望将文件上传到服务器。 在控制器上,当事件触发时,fileupload 为 null。而且 model.fileupload 也有路径。 实际上是使用 ajax post 方法提交我的表单。

cshtml代码....

<form id="frmRegistrationDetails" method="post" enctype="multipart/form-data">
    <table>
      <tr>
         <td>
            <label>Upload File</label><input type="file" id="fileupload"  name="fileupload" />
         </td>
      </tr>
   </table>
</form>

控制器代码

 [HttpPost]
 public JsonResult SaveDetails(reg_up_mvc model,HttpPostedFileBase fileupload)
  
  try
  
    detailsRegistration registrationContext = new detailsRegistration();
    reg_up_mvc registrationDetails = new reg_up_mvc();
    registrationDetails.full_name = model.full_name;
    registrationDetails.fileupload = model.fileupload;
if (model.fileupload != null)

string sPath = Path.Combine(Server.MapPath("~/UploadedFilesFromRegistration"), fileupload.FileName);
fileupload.SaveAs(sPath);
registrationDetails.fileupload = sPath;

jquery

var data = 
        model: 
                fileupload: $('#fileupload').val()
               
    ;
     $.ajax(
        type: "post",
        data: JSON.stringify(data),
        url: "/Controller/ActionName",
        contentType: "application/json;charset=utf-8",
        success: function (response) 
                           alert("successful")
                           
         );

【问题讨论】:

console.logJSON.stringify(data), 告诉我们它是什么。 model:fileupload:"C\fakepath\download.jpg".forgot to add id to 曾尝试过使其相同但无能为力。所以只是更改了它的名称字段并尝试按名称元素检索值。但仍然没有希望 model:fileupload:"C\fakepath\download.jpg" 这看起来不像 JSON。你确定正是吗? ,"fileupload":"C:\\fakepath\\download-hill.jfif" 那不是文件 contents。那是文件的路径。服务器对此无能为力。 【参考方案1】:
https://***.com/questions/28373894/httppostedfilebase-is-null-using-jquery-ajax?noredirect=1&lq=1

已在此回答,请检查

【讨论】:

以上是关于使用 jquery ajax 发布时,Httppostedfilebase 始终返回 null的主要内容,如果未能解决你的问题,请参考以下文章

jQuery地址插件,使用AJAX时路径名改变

使用 Jquery.ajax().then() 时无法 .catch() 出错

节点 JS 堆栈。通过 Jquery 和 AJAX 发布 ejs 数据时遇到问题

使用 jQuery 在失败时重试 AJAX 请求的最佳方法是啥?

当 jQuery Ajax 调用完成时控制请求

在 jquery 数据表组件中使用 Ajax 发布 ViewModel 的问题