我有一个简单的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无法发布大文件?两个代码集中实际发生了什么?
答案 0 :(得分:1)
此设置位于您的web.config
中<configuration>
<system.web>
<httpRuntime maxRequestLength="xxx" />
</system.web>
</configuration>
默认值为4 MB。