Web.api MultipartFormDataStreamProvider不读取PDF

时间:2015-10-20 12:09:38

标签: c# asp.net-mvc asp.net-web-api

您好我正在尝试通过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

1 个答案:

答案 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>