Skip to main content
 首页 » 编程设计

c#之将文件从 MVC 发布到 WEB API

2024年05月06日38JustinYoung

我有一个瘦 ASP.NET MVC 客户端和一个 WEB API 后端。我需要在 MVC 端接收 excel 文件并将其发送到 WEB API Controller 而不做任何更改。我怎样才能以最简单的方式实现它?

[HttpPost] 
public ActionResult UploadExcelFile(HttpPostedFileBase file) 
{ 
   //call web api here  
}  

现在我正在考虑创建一个如下所示的 UploadFileRequest:

public class UploadFileRequest  
{ 
    public byte[] byteData { get; set; } 
} 

并将文件作为字节数组传递,但这看起来效率极低。

请您参考如下方法:

我创建了一个示例,用于将文件从 MVC Controller 上传到 Web Api Controller ,它运行良好

MVC Controller :

    [ActionName("FileUpload")] 
    [HttpPost] 
    public ActionResult FileUpload_Post() 
    { 
        if (Request.Files.Count > 0) 
        { 
            var file = Request.Files[0]; 
 
            using (HttpClient client = new HttpClient()) 
            { 
                using (var content = new MultipartFormDataContent()) 
                { 
                    byte[] fileBytes = new byte[file.InputStream.Length + 1];                          
                    file.InputStream.Read(fileBytes, 0, fileBytes.Length); 
                    var fileContent = new ByteArrayContent(fileBytes); 
                    fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = file.FileName }; 
                    content.Add(fileContent); 
                    var result = client.PostAsync(requestUri, content).Result; 
                    if (result.StatusCode == System.Net.HttpStatusCode.Created) 
                    { 
                        ViewBag.Message= "Created"; 
                    } 
                    else 
                    { 
                        ViewBag.Message= "Failed"; 
                    } 
                } 
            } 
        } 
        return View(); 
    } 

网络 API Controller :

    [HttpPost] 
    public HttpResponseMessage Upload() 
    { 
        if(!Request.Content.IsMimeMultipartContent()) 
        { 
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); 
        } 
        if (System.Web.HttpContext.Current.Request.Files.Count > 0) 
        { 
            var file = System.Web.HttpContext.Current.Request.Files[0]; 
            .... 
            // save the file 
            .... 
            return new HttpResponseMessage(HttpStatusCode.Created); 
        } 
        else 
        { 
            return new HttpResponseMessage(HttpStatusCode.BadRequest); 
        } 
    } 

有关在 Web Api 中保存文件的更多信息,请参阅 Web API: File Upload

希望对某人有所帮助!