【问题标题】:How to upload file with web-api如何使用 web-api 上传文件
【发布时间】:2012-11-24 01:33:23
【问题描述】:

客户端代码:

<form action="api/MyAPI" method="post" enctype="multipart/form-data">     
<label for="somefile">File</label>     <input name="somefile" type="file" />     
<input type="submit" value="Submit" /> 
</form>

以及如何使用mvc web-api处理上传文件,有一些示例代码吗?

【问题讨论】:

    标签: asp.net html asp.net-mvc asp.net-web-api


    【解决方案1】:

    HTML 代码:

    <form action="api/MyAPI" method="post" enctype="multipart/form-data">     
        <label for="somefile">File</label>     
         <input name="somefile" type="file" />     
        <input type="submit" value="Submit" /> 
        </form>
    

    控制器

             // POST api/MyAPI
            public HttpResponseMessage Post()
            {
                HttpResponseMessage result = null;
                var httpRequest = HttpContext.Current.Request;
                if (httpRequest.Files.AllKeys[0] == "image")
                {
                    if (httpRequest.Files.Count > 0)
                    {
                        var docfiles = new List<string>();
                        foreach (string file in httpRequest.Files)
                        {
                            var postedFile = httpRequest.Files[file];
                            var filePath = HttpContext.Current.Server.MapPath("~/Images/" + postedFile.FileName);
                            postedFile.SaveAs(filePath);
    
                            docfiles.Add(filePath);
                        }
                        result = Request.CreateResponse(HttpStatusCode.Created, docfiles);
    
    
                    }
                }
                else
                {
                    result = Request.CreateResponse(HttpStatusCode.BadRequest);
                }
                return result;
            }
    

    试试下面的链接

    这个链接对我有用,希望它对你有用

    http://www.asp.net/web-api/overview/advanced/sending-html-form-data,-part-2

    【讨论】:

    • 感谢 kleopatra,shabeer90 提出宝贵意见
    【解决方案2】:

    您可以使用ApiMultipartFormFormmatter 将文件上传到 web api 2。 通过使用这个库,您可以定义一个视图模型来获取从客户端提交的参数。如:

    public class UploadFileViewModel 
    {
        public HttpFile Somefile{get;set;}
    }
    

    并像这样在您的 Api 控制器中使用它:

    public IHttpActionResult Upload(UploadFileViewModel info)
    {
        if (info == null)
        {
            info = new UploadFileViewModel();
            Validate(info);
        }
    
        if (!ModelState.IsValid)
            return BadRequest(ModelState);
    
        return Ok();
    }
    

    这个库可以解析嵌套对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2020-04-12
      • 2019-12-14
      • 2020-07-10
      相关资源
      最近更新 更多