Tôi muốn hiển thị hành động ASP.Net Web Api 2 bằng cách sử dụng động từ HTTP PUT để tải tệp lên. Điều này kết hợp với mô hình REST của chúng tôi vì API đại diện cho một hệ thống tệp từ xa (tương tự như WebDAV, nhưng thực sự đơn giản), vì vậy máy khách chọn tên tài nguyên (do đó PUT là lý tưởng và POST không phải là sự lựa chọn hợp lý).Tải tệp lên bằng cách sử dụng động từ PUT trong ASP.Net Web Api 2
Tài liệu Web Api mô tả how to upload files using multipart/form-data forms, nhưng không mô tả cách thực hiện bằng các phương pháp PUT.
Bạn sẽ sử dụng cái gì để kiểm tra một API như vậy (các biểu mẫu ghép kênh HTML không cho phép động từ PUT)? việc thực hiện máy chủ sẽ trông giống như thực hiện nhiều phần dữ liệu được mô tả trong the web api documentation (sử dụng MultipartStreamProvider
), hoặc nó sẽ giống như thế này:
[HttpPut]
public async Task<HttpResponseMessage> PutFile(string resourcePath)
{
Stream fileContent = await this.Request.Content.ReadAsStreamAsync();
bool isNew = await this._storageManager.UploadFile(resourcePath, fileContent);
if (isNew)
{
return this.Request.CreateResponse(HttpStatusCode.Created);
}
else
{
return this.Request.CreateResponse(HttpStatusCode.OK);
}
}
Sẽ thú vị để xem làm thế nào để viết một bài kiểm tra đơn vị thích hợp cho việc này, thay vì dựa vào việc chạy một Máy chủ HTTP. – James
Tôi gặp rất nhiều sự cố khi làm việc này vì tôi vẫn gặp lỗi 404. Hóa ra bạn có thể cần phải thay đổi web.config để chấp nhận tên tệp của biểu mẫu '{filename}. {Extension}'. Xem câu hỏi Stackoverflow này để biết chi tiết: http://stackoverflow.com/questions/20998816/dot-character-in-mvc-web-api-2-for-request-such-as-api-people-staff-45287 –