WebApi上传图片

public class ImageController : ApiController
{
//上传图片
[Route("image_upload")]
[HttpPost]
public Task<Hashtable> ImgUploadTask()
{
  // 检查是否是 multipart/form-data 
  if (!Request.Content.IsMimeMultipartContent("form-data"))
    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
  //文件保存目录路径 
  string SaveTempPath = "~/img/";
  string dirTempPath = HttpContext.Current.Server.MapPath(SaveTempPath);
  if (!Directory.Exists(dirTempPath))//如果不存在就创建file文件夹
  {
    Directory.CreateDirectory(dirTempPath);
  }
  // 设置上传目录 
  var provider = new MultipartFormDataStreamProvider(dirTempPath);
  var task = Request.Content.ReadAsMultipartAsync(provider).
  ContinueWith<Hashtable>(o =>
   {
    Hashtable hash = new Hashtable();
    var file = provider.FileData[0];//provider.FormData 
    string orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');
    FileInfo fileinfo = new FileInfo(file.LocalFileName);
    //最大文件大小 
    int maxSize = 10000000;
    if (fileinfo.Length <= 0)
    {
      hash["error"] = 1;
      hash["errmsg"] = "请选择上传文件。";
    }
    else if (fileinfo.Length > maxSize)
    {
      hash["error"] = 1;
      hash["errmsg"] = "上传文件大小超过限制。";
    }
    else
    {
      string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));
      //定义允许上传的文件扩展名 
      String fileTypes = "gif,jpg,jpeg,png,bmp";
      if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1)
      {
        hash["error"] = 1;
        hash["errmsg"] = "上传文件扩展名是不允许的扩展名。";
      }
      else
      {
        String ymd = DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
        String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);
        fileinfo.CopyTo(Path.Combine(dirTempPath, newFileName + fileExt), true);
        fileinfo.Delete();
        hash["error"] = 0;
        hash["errmsg"] = "上传成功";
      }
    }
    return hash;
  });
  return task;
}

 

posted @ 2017-04-11 11:28  Loading......  阅读(379)  评论(0)    收藏  举报