Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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();
            }
        }