ASP.NET Web API 上传文件

HTML表单:

<form id="form1" method="post" 
    enctype="multipart/form-data" action="http://localhost:2317/api/uploadFile">
    <div>
        <label for="Name">Name</label>
    </div>
    <div>
        <input name="Name" type="text" />
    </div>
    <div>
        <label for="Price">Price</label>
    </div>
    <div>
        <input name="Price" type="text" />
    </div>
     <div>
        <input name="ImageFile" type="file"  id="me"/>
    </div>
    <div>
        <input type="submit" name="name" value="submit" />
    </div>
</form>

API Controller:

     [Route("api/uploadFile")]
        public HttpResponseMessage PostFile()
        {
            HttpResponseMessage result = null;
            var httpRequest = HttpContext.Current.Request;
            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("~/" + postedFile.FileName);
                    postedFile.SaveAs(filePath);

                    docfiles.Add(filePath);
                }
                result = Request.CreateResponse(HttpStatusCode.Created, docfiles);
            }
            else
            {
                result = Request.CreateResponse(HttpStatusCode.BadRequest);
            }
            return result;
        }

HttpClient客户端上传:

//--------上传------------
            HttpClient client = new HttpClient();
            #region
            MultipartFormDataContent form = new MultipartFormDataContent();
            StreamContent fileContent = new StreamContent(File.OpenRead(@"D:\uni-all-resources\CloudShop\Source\Development\Uni2uni.iShop\Uni2uni.iShop.WebApi\UploadAudio\ios_2.pcm"));
            fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data");
            fileContent.Headers.ContentDisposition.FileName = "ios_2.pcm";
            form.Add(fileContent);
            #endregion

            HttpResponseMessage res = client.PostAsync("http://app.uni2uni.com/api/Audio/UploadAudioResponseMessage", form).Result;
            var uploadModel = res.Content.ReadAsStringAsync().Result;

 

posted @ 2014-04-03 13:24  学亮  阅读(5172)  评论(1编辑  收藏  举报