上传控件FineUploader后台获取文件对象实例

public virtual ActionResult AsyncUpload()
{
  //we process it distinct ways based on a browser
  //find more info here http://stackoverflow.com/questions/4884920/mvc3-valums-ajax-file-upload
  Stream stream = null;
  var fileName = "";
  var contentType = "";
  if (String.IsNullOrEmpty(Request["qqfile"]))
  {
    // IE
    HttpPostedFileBase httpPostedFile = Request.Files[0];
    if (httpPostedFile == null)
      throw new ArgumentException("No file uploaded");
    stream = httpPostedFile.InputStream;
    fileName = Path.GetFileName(httpPostedFile.FileName);
    contentType = httpPostedFile.ContentType;
  }
  else
  {
    //Webkit, Mozilla
    stream = Request.InputStream;
    fileName = Request["qqfile"];
  }

  var fileBinary = new byte[stream.Length];
  stream.Read(fileBinary, 0, fileBinary.Length);

  var fileExtension = Path.GetExtension(fileName);
  if (!String.IsNullOrEmpty(fileExtension))
    fileExtension = fileExtension.ToLowerInvariant();

  var download = new Download
  {
    DownloadGuid = Guid.NewGuid(),
    UseDownloadUrl = false,
    DownloadUrl = "",
    DownloadBinary = fileBinary,
    ContentType = contentType,
    //we store filename without extension for downloads
    Filename = Path.GetFileNameWithoutExtension(fileName),
    Extension = fileExtension,
    IsNew = true
  };
  _downloadService.InsertDownload(download);

  //when returning JSON the mime-type must be set to text/plain
  //otherwise some browsers will pop-up a "Save As" dialog.
  return Json(new { success = true, 
  downloadId = download.Id, 
  downloadUrl = Url.Action("DownloadFile", new { downloadGuid= download.DownloadGuid }) },
  MimeTypes.TextPlain);
}

 

posted @ 2017-12-29 17:17  !opts  阅读(906)  评论(0编辑  收藏  举报