您好我正在尝试通过web.api上传文件,我有这个有用的代码:
var task = request.Content.ReadAsMultipartAsync(provider).
ContinueWith<IHttpActionResult>(o => {
for (int i = 0; i < provider.FileData.Count; i++) {
//Working Save file code
}
}
);
问题是,如果我上传并且图片provider.FileData.Count
是> 0
并且文件数据存在,但是我上传了一个Pdf provider.FileData.Count
是== 0
并且我不知道收到任何数据......
客户端的代码如下:
formData_object = new FormData();
$.each($form.serializeArray(), function(i, item) {
formData_object.append(item.name, item.value);
});
//and then add files
$form.find('input[type=file]').each(function(){
var field_name = $(this).attr('name');
var files = $(this).data('files');
if(files && files.length > 0) {
for(var f = 0; f < files.length; f++) {
formData_object.append(field_name, files[f]);
}
}
});
deferred = $.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
processData: false,
contentType: false,
dataType: 'json',
data: formData_object
})
最后要注意的是,pdf的大小是4.87Mb
答案 0 :(得分:0)
好的,发现问题并且是一个非常简单的问题,因为我缺乏对http Runtime本身的一些基础知识。 我用于测试的文件大于最大大小(4MB),但是web.api没有返回任何错误以指向正确的方向。
对于有类似问题的人:
ASP.NET运行时的默认文件(请求)限制为4MB 4096KB,可以在web.config中更改:
<system.web>
<httpRuntime maxRequestLength="XXXX" />
</system.web>
作为旁注,IIS7的限制是30 000 000字节(28.6MB),可以在web.config中更改:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="XXXX" />
</requestFiltering>
</security>
</system.webServer>