文件未在 Ajax 请求中使用 FormData 发送
Posted
技术标签:
【中文标题】文件未在 Ajax 请求中使用 FormData 发送【英文标题】:File not sending with FormData in Ajax request 【发布时间】:2021-10-22 06:23:38 【问题描述】:我有一个 ajax 请求,它正在发送一个文件以及其他一些信息。除文件外的所有内容都是正确的值,并且文件始终为空。我不知道为什么。
这是我在表单中包含的输入:
<input type="file" id="file" runat="server"/>
点击按钮时,它会调用这个函数:
function ButtonClick()
var file = document.getElementById('file').files[0]; // correctly gets the file
var formData = new FormData();
formData.append('key1', 'val1');
formData.append('key2', 'val2');
formData.append('file', file, file.name);
$.ajax(
cache: false,
data: formData,
dataType: 'json',
processData: false,
contentType: false,
success: function (data, textStatus, jqXHR) closeWindow(); ,
timeout: 30000,
type: 'POST',
url: '<%= ResolveClientUrl("~/api/Example/ExampleUrl") %>'
);
当我收到服务器端的请求时,我得到以下值:
var key1= HttpContext.Current.Request.Form["key1"]); // returns "val1"
var key2= HttpContext.Current.Request.Form["key2"]); // returns "val2"
var file= HttpContext.Current.Request.Form["file"]); // returns "null"
当我查看HttpContext.Current.Request.Form
时,“文件”根本不在请求中。
【问题讨论】:
【参考方案1】:该文件应该可以通过
访问HttpContext.Current.Request.Files["file"]
【讨论】:
以上是关于文件未在 Ajax 请求中使用 FormData 发送的主要内容,如果未能解决你的问题,请参考以下文章
通过Ajax方式上传文件,使用FormData进行Ajax请求
通过Ajax方式上传文件,使用FormData进行Ajax请求
通过Ajax方式上传文件,使用FormData进行Ajax请求
通过Ajax方式上传文件(图片),使用FormData进行Ajax请求