簡體   English   中英

試圖從 ASP.NET Web API 獲取文件響應

[英]Trying to get file response from ASP.NET Web API

我已經將一些方法從 MVC controller 遷移到 Web API controller 現在我有了這個方法:

[HttpPost]
[Route("api/Request/UploadImage")]        
public IHttpActionResult UploadImage()
{
    try
    {
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }    

        var httpRequest = System.Web.HttpContext.Current.Request;

        if (_inMemoryStore == null)
        {
            _inMemoryStore = new List<FileLocalStore>();
        }

        if (httpRequest.Files.Count > 0)
        {
            var postedFile = httpRequest.Files[0];
            var uniqueFileName = Guid.NewGuid().ToString();
            var fileStream = new MemoryStream();

            postedFile.InputStream.CopyTo(fileStream);
            _inMemoryStore.Add(new FileLocalStore() { Id = uniqueFileName, File = fileStream });

            var fileStore = new ServiceRequestAttachmentViewModel
                    {
                        FileName = httpRequest.Form["FileName"].ToString(),
                        FileMIME = httpRequest.Form["FileMIME"].ToString(),
                        UniqueFileName = uniqueFileName,
                        Thumbnail = fileStream.GetBuffer().GetThumbnailImage(80, 80),
                        IsPrivate = Convert.ToBoolean(httpRequest.Form["IsPrivate"].ToString()),
                        IsAdded = true,
                        IsDeleted = false
                    };    

            var content = JsonConvert.SerializeObject(fileStore);

            // return Ok(fileStore);                        
            return Content(HttpStatusCode.OK,fileStore);                                                                    
        }
        else
        {
            return Ok(new { Data = "" });

            //return Request.CreateResponse(HttpStatusCode.Created, new
            //{ Data = "" });
        }
    }
    catch (Exception ex)
    {
        Log.Error($"Error uploading image {ex.Message} {ex.InnerException} {ex.StackTrace}");
        return BadRequest(ex.Message);
        //var response2 = Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message);
        //return response2;
    }
}

在原來的MVC controller中,很容易將fileStore序列化后返回ContentResult 我想在這里做同樣的事情,但我遇到了問題。 它一直說它超過了最大字節數,但文件只有 10k 大。

還有什么我需要設置的嗎? 接收到的媒體類型是multipart/form-data類型。 thumbnail 屬性是個問題,因為它有數據字節。

這是使用 jQuery 的fileupload()方法調用的。

您可能.net 更新 web.config 中的 maxRequestLength 和 maxAllowedContentLength

來自MSDN ,最大默認大小為 4MB

這是1GB的設置

<system.web>
    <httpRuntime maxRequestLength="2097152" requestLengthDiskThreshold="2097152" executionTimeout="240"/>
</system.web>
<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="2147483648" />
        </requestFiltering>
    </security>
</system.webServer>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM