使用WebApi限制文件上载大小

时间:2015-06-02 13:40:42

标签: javascript ajax html5 asp.net-web-api

我有一个简单的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无法发布大文件?两个代码集中实际发生了什么?

1 个答案:

答案 0 :(得分:1)

此设置位于您的web.config

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="xxx" />
  </system.web>
</configuration>

默认值为4 MB。