項目開發中遇到了一個ASP.NET WebAPI 4.0 接收,發送圖片的問題。本身摸索了一個解決辦法,現分享給你們,望你們在之後碰到這樣的需求能夠作個參考。c#
接收(單文件):code
string fullPath = HttpContext.Current.Server.MapPath("~/Images"); //讀取文件流到內存中 var task = Request.Content.ReadAsMultipartAsync(); task.Wait(); var file = task.Result; //取出原始文件名 var oldfileName = file.Contents[0].Headers.ContentDisposition.FileName.Replace("\"","").Trim(); //保存路徑 var logoFilePath = Path.Combine(HttpContext.Current.Server.MapPath("~/Images/Logo"), oldfileName); //建立文件 var fileStream = File.Create(logoFilePath); //寫入流 await file.Contents.ElementAt(0).CopyToAsync(fileStream); fileStream.Close(); return Ok();
發送(經過地址重定向):orm
//構建數據訪問對象 ISchoolRepository schoolRepository = RepositoryFactory.GetRepository<ISchoolRepository, School>(null, connstr); //查找指定實體 var school = schoolRepository.FindBy(schoolID); if(school==null) { //指定實體已經被刪除 return NotFound(); } else { //實體是否上傳圖片 if(string.IsNullOrEmpty(school.LogoName)) { //返回默認圖片 var defaultImageUrl = string.Format("{0}://{1}:{2}/Images/Thumbnails/School.png", "https", Request.RequestUri.Host, Request.RequestUri.Port ); //發送重定向地址 return Redirect(defaultImageUrl); } else { //組合圖片的URL地址 var trainingImageUrl = string.Format("{0}://{1}:{2}/Images/Thumbnails/{3}.png", "https", Request.RequestUri.Host, Request.RequestUri.Port, System.IO.Path.GetFileNameWithoutExtension(school.LogoName) ); //發送重定向地址 return Redirect(trainingImageUrl); } }