簡體   English   中英

如何接受文件上傳和一些數據作為對.NET REST API的POST

[英]How to accept a file upload AND some data as a POST to a .NET REST API

我正在使用.NET WebAPI從.NET應用程序自托管REST API。 我已經配置了一個控制器來接受您的標准GET和POST,但是有一種情況我還沒有涉及。

在用戶界面方面,用戶將填寫一個表單,其中包括要上傳文件的路徑,當用戶單擊“提交”時,該數據+文件應通過其REST API張貼到我的服務器上。 在控制器中僅針對數據部分設計POST方法很容易,但是我們如何也接受文件上傳作為POST方法的一部分呢?

我當前不使用文件數據來接收發布請求的當前方法的示例如下:

        // public class EventsController : ApiController
        public HttpResponseMessage PostEvent(EventRow e)
        {
            // some database work here.
            if (e == null) { return BadRequest(e); }

            var validResponse = Request.CreateResponse<EventRow>(System.Net.HttpStatusCode.Created, e);
            string uri = Url.Link("API Default", new { id = e.Id });
            validResponse.Headers.Location = new Uri(uri);

            return validResponse;
        }

您可以將文件轉換為base64編碼的字節數組,然后將其作為屬性發送到要發送的JSON對象中。 不需要特殊的標題,“ application / json”和post就可以了。

有關使用javascript將文件轉換為base64編碼的字節數組的堆棧溢出問題。

C#應該只是File.WriteAllBytes() ,或將字節數組存儲在數據庫或其他數據存儲中。

HttpRequest.Files應該包含上傳的二進制文件,以便您隨意使用。 您可能需要在Controller的“操作方法”中手動訪問它。

請注意,僅當HTTP請求內容類型值為“ multipart / form-data”時,才會填充文件集合。

暫無
暫無

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

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