2015-10-20 37 views
0

你好,我是想通过上传文件web.api,我有这方面的工作代码:Web.api MultipartFormDataStreamProvider不读PDF

var task = request.Content.ReadAsMultipartAsync(provider). 
     ContinueWith<IHttpActionResult>(o => { 

      for (int i = 0; i < provider.FileData.Count; i++) { 

        //Working Save file code 

      } 
     } 
); 

的问题是,如果我上传和形象​​是> 0和文件中的数据是存在的,但如果我上传PDF​​为== 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 
}) 

作为最后一个纸条的大小是4.87Mb

回答

0

好吧,发现这个问题,是一个很简单的,因为我缺乏对http运行时本身的一些基础知识。 我用于测试的文件大于最大大小(4MB),但web.api没有返回任何错误以指向正确的方向。

对于具有一个类似的问题的任何一个:

默认的文件(请求)限制ASP.NET运行时是4MB 4096KB,并且可以在web.config中在改变:

<system.web> 
    <httpRuntime maxRequestLength="XXXX" /> 
</system.web> 

作为注意IIS7的限制是30000000字节(28.6MB),可以在web.config中更改:

<system.webServer> 
    <security> 
    <requestFiltering> 
     <requestLimits maxAllowedContentLength="XXXX" /> 
    </requestFiltering> 
    </security> 
</system.webServer>