/// <summary> /// Deletes a productFile /// </summary> /// <param name="productFileMap">Download</param> public virtual void DeleteProductFile(ProductFileMap productFileMap) { if (productFileMap == null) { throw new ArgumentNullException("productFile"); } _productFileRepository.Delete(productFileMap); _eventPubisher.EntityDeleted(productFileMap); }
public ActionResult AsyncUpload(int productId) { //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 ProductFileMap(); download.ProductFile = new ProductFile(); download.ProductFile.DownloadGuid = Guid.NewGuid(); download.ProductFile.UseDownloadUrl = false; download.ProductFile.DownloadUrl = ""; download.ProductFile.DownloadBinary = fileBinary; download.ProductFile.ContentType = contentType; download.ProductFile.Filename = Path.GetFileNameWithoutExtension(fileName); download.ProductFile.Extension = fileExtension; download.ProductFile.IsNew = true; download.ProductId = productId; download.DisplayOrder = _productFileService.GetNumberOfProductFiles(productId) + 1; download.ProductFile.Description = ""; _productFileService.InsertProductFile(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 { downloadId = download.Id }) }, "text/plain")); }