【发布时间】:2015-08-16 08:20:18
【问题描述】:
我有一个简单的 WebApi,我可以使用它上传文件。下面是它的简单代码
[HttpPost]
public async Task<bool> UploadSingleFile()
{
bool isSuccess = false;
try
{
var streamProvider = new MultipartFormDataStreamProvider("D:\\");
await Request.Content.ReadAsMultipartAsync(streamProvider);
isSuccess = true;
}
catch (Exception ex)
{ }
return isSuccess;
}
我在表单提交中调用它从 HTML <form> 标记使用波纹管代码
<form enctype="multipart/form-data" method="post" action="http://localhost:4952/api/UploadApi/UploadSingleFile" id="ajaxUploadForm" novalidate="novalidate">
<ol>
<li>
<input type="file" name="file" id="fileInput">
</li>
<li>
<input type="button" id="ajaxUploadButton" class="btn">
</li>
</ol>
</form>
我可以使用上面的代码上传任何大小的文件。但是如果我使用 Javascript ajax 调用相同的 API,API 操作方法会抛出错误,指出文件大小超过了最大大小。
$('#ajaxUploadButton').click(function () {
var data, xhr;
data = new FormData();
data.append('file', $('#fileInput')[0].files[0]);
xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:4952/api/UploadApi/UploadSingleFile', true);
xhr.onreadystatechange = function (response) { };
xhr.send(data);
})
那么为什么 ajax 不能发布大文件呢?两个代码集中实际发生了什么?
【问题讨论】:
标签: javascript ajax html asp.net-web-api