Пример #1
0
        public void TestImageProcessor()
        {
            var           ip  = new GalleryImageProcessor();
            OriginalImage img = new OriginalImage();

            img.Filename = @"C:\Users\Ken\Documents\GitHub\SimplePhotoGallery\SimplePhotoGallery\Galleries\Canon1IMG_0050.JPG";
            img.Title    = "Renee smiling";
            ip.ProcessPostUpload(img);



            // now we should test that we have four thumbnails:
            // large, medium, small and tiny
            GalleryContext db = new GalleryContext();

            var originalImage = db.Images.ToList();

            // .Where(b => b.Title.Contains("James")).ToList();

            /*
             *          .FirstOrDefault();
             *                         .Include("ProcessedImages")
             *
             */


            foreach (var processedImage in originalImage)
            {
                var fn = processedImage.Filename;
            }
        }
        // Upload entire file
        private void UploadWholeFile(HttpContext context, List <FilesStatus> statuses)
        {
            // hack to see if thumbnails can be added
            //Thumbnail tn = new Thumbnail();
            //tn.Description = "medium";
            //tn.MaxWidth = 600;
            //db.Thumbnails.Add(tn);
            //db.SaveChanges();

            // in a controller we would probably use data binding
            if (context.Request.Form["uploadDestination"] != "")
            {
                // this changes value of StorageRoot
                GalleryDirectory = "~/" + context.Request.Form["uploadDestination"] + "/";
            }
            else
            {
                GalleryDirectory = "~/" + ConfigurationManager.AppSettings["uploadDestination"] + "/";
            }

            for (int i = 0; i < context.Request.Files.Count; i++)
            {
                var file = context.Request.Files[i];

                // todo, see if this is really the right approach
                var fullPath =
                    Path.Combine(StorageRoot, Path.GetFileName(file.FileName));
                // hack using the file name to access the title field via the file name
                var fileTitle = context.Request.Form[file.FileName.Replace(" ", "").Replace(".", "")];

                // the file title is a description


                try
                {
                    GalleryImageProcessor ip  = new GalleryImageProcessor();
                    OriginalImage         img = new OriginalImage();
                    img.Filename = fullPath;
                    img.Title    = fileTitle;
                    // todo, see if there are better ways of generating this url
                    img.UrlPath = GalleryDirectory + "/" + Path.GetFileName(file.FileName);
                    // todo, put this saving into the image as I had a bug where no
                    // files were saved because I omitted this step.
                    file.SaveAs(img.Filename);
                    ip.ProcessPostUpload(img);


                    string fullName = Path.GetFileName(file.FileName);
                    statuses.Add(new FilesStatus(fullName, file.ContentLength, fullPath));
                }
                catch (Exception e)
                {
                    // todo, find out how to report the error to the web page
                    context.Response.Write("<p>Exception " + e.Message + "</p>");
                }
            }
        }