ASP.NET Web API 发送接收图片参考

项目开发中遇到了一个ASP.NET WebAPI 4.0  接收,发送图片的问题。自己摸索了一个解决办法,现分享给大家,望大家在以后碰到这样的需求可以做个参考。

接收(单文件):

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();


发送(通过地址重定向):

 //构建数据访问对象
 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);
        }
}


你可能感兴趣的:(Web,上传图片,api)