/// <summary> /// Saves the data. /// </summary> /// <param name="context">The context.</param> /// <param name="uploadedFile"></param> /// <param name="file">The file.</param> /// <param name="fileType"></param> public override void SaveData(HttpContext context, HttpPostedFile uploadedFile, BinaryFile file, BinaryFileType fileType) { // Check to see if we should flip the image. try { file.FileName = Path.GetFileName(uploadedFile.FileName); file.MimeType = uploadedFile.ContentType; Bitmap bmp = new Bitmap(uploadedFile.InputStream); var exif = new EXIFextractor(ref bmp, "\n"); if (exif["Orientation"] != null) { RotateFlipType flip = OrientationToFlipType(exif["Orientation"].ToString()); if (flip != RotateFlipType.RotateNoneFlipNone) // don't flip if orientation is correct { bmp.RotateFlip(flip); exif.setTag(0x112, "1"); // reset orientation tag } } if (context.Request.QueryString["enableResize"] != null) { Bitmap resizedBmp = RoughResize(bmp, 1024, 768); bmp = resizedBmp; } using (var stream = new MemoryStream()) { bmp.Save(stream, ContentTypeToImageFormat(file.MimeType)); if (file.Data == null) { file.Data = new BinaryFileData(); } file.Data.Content = stream.ToArray(); } // Use provider to persist file var provider = fileType != null ? ProviderContainer.GetComponent(fileType.StorageEntityType.Name) : ProviderContainer.DefaultComponent; provider.SaveFile(file, null); } catch (Exception ex) { ExceptionLogService.LogException(ex, context); } }
/// <summary> /// Saves the data. /// </summary> /// <param name="context">The current HTTP context.</param> /// <param name="uploadedFile">The file that was uploaded</param> /// <param name="file">The file.</param> /// <param name="fileType">The file type.</param> public virtual void SaveData(HttpContext context, HttpPostedFile uploadedFile, BinaryFile file, BinaryFileType fileType) { var provider = fileType != null ? ProviderContainer.GetComponent(fileType.StorageEntityType.Name) : ProviderContainer.DefaultComponent; file.MimeType = uploadedFile.ContentType; file.FileName = Path.GetFileName(uploadedFile.FileName); var bytes = new byte[uploadedFile.ContentLength]; uploadedFile.InputStream.Read(bytes, 0, uploadedFile.ContentLength); file.Data = new BinaryFileData { Content = bytes }; provider.SaveFile(file, null); }
/// <summary> /// Provides an end method for an asynchronous process. /// </summary> /// <param name="result">An IAsyncResult that contains information about the status of the process.</param> public void EndProcessRequest(IAsyncResult result) { HttpContext context = (HttpContext)result.AsyncState; try { // restore the command from the context SqlCommand cmd = (SqlCommand)context.Items["cmd"]; using (SqlDataReader reader = cmd.EndExecuteReader(result)) { reader.Read(); context.Response.Clear(); var fileName = (string)reader["FileName"]; context.Response.AddHeader("content-disposition", string.Format("inline;filename={0}", fileName)); context.Response.ContentType = (string)reader["MimeType"]; var entityTypeName = (string)reader["StorageTypeName"]; var provider = ProviderContainer.GetComponent(entityTypeName); if (provider is Database) { context.Response.BinaryWrite((byte[])reader["Data"]); } else { var url = (string)reader["Url"]; Stream stream; if (url.StartsWith("~/")) { var path = context.Server.MapPath(url); var fileInfo = new FileInfo(path); stream = fileInfo.Open(FileMode.Open, FileAccess.Read); } else { var request = WebRequest.Create(url); var response = request.GetResponse(); stream = response.GetResponseStream(); } if (stream != null) { using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); stream.Close(); context.Response.BinaryWrite(memoryStream.ToArray()); } } else { context.Response.StatusCode = 404; context.Response.StatusDescription = "Unable to find the requested file."; } } context.Response.Flush(); context.Response.End(); } } catch (Exception ex) { ExceptionLogService.LogException(ex, context); context.Response.StatusCode = 500; context.Response.StatusDescription = ex.Message; context.Response.Flush(); context.Response.End(); } }