Пример #1
0
        public async Task<KendoUploadImg> UploadImage(int id)
        {
            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                return null;
            }

            // upload image root path
            var provider = new MultipartFormDataStreamProvider(_articleImageSaveFolder);

            // Read the form data
            await Request.Content.ReadAsMultipartAsync(provider);

            // load the files
            // at the moment, we only process one file
            var file = provider.FileData.FirstOrDefault();

            if (file == null)
            {
                return null;
            }

            // todo: validate file extension to avoid files of other types being upload

            // On upload, files are given a generic name like "BodyPart_26d6abe1-3ae1-416a-9429-b35f15e6e5d5"
            // so this is how you can get the original file name
            var originalFileName = GetDeserializedFileName(file);

            // build the new name of the imag file by datetime stamp
            var newFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + Path.GetExtension(originalFileName);

            // create sub directory (article id) if it doesn't exist
            // saving directory
            var imgDirectory = Path.Combine(_articleImageSaveFolder, id.ToString());
            // create if directory doesn't exist
            if (!Directory.Exists(imgDirectory))
            {
                Directory.CreateDirectory(imgDirectory);
            }

            // copy the uploaded img into article folder
            File.Copy(file.LocalFileName, Path.Combine(imgDirectory, newFileName), true);

            // delete the oringinal img file from 
            File.Delete(file.LocalFileName);

            // create thumbnail image
            var thumbnailDirectory = Path.Combine(imgDirectory, "thumbnails");

            // create folder if it doesn't exist
            if (!Directory.Exists(thumbnailDirectory))
            {
                Directory.CreateDirectory(thumbnailDirectory);
            }

            // generate thumnail image then save into the directory
            ImageHelper.CreateThumbnail(
                        Path.Combine(imgDirectory, newFileName), // source image
                        260, // width todo:??
                        150, // height
                        "image/jpeg", // mime type
                        Path.Combine(thumbnailDirectory, newFileName), // save path
                        100 // quality
                );

            // todo: insert new row into ArticleImageTable once image is uploaded
            CreateArticleImage(id, id + "/" + newFileName, id + "/thumbnails/" + newFileName);

            // return json data 
            var uploadedImg = new KendoUploadImg
            {
                Name = newFileName,
                //Size = 1000,
                Type =  "f"
            };

            return uploadedImg;
        }
Пример #2
0
        public IEnumerable<KendoUploadImg> BrowseFiles(int id)
        {
            // upload file path
            // check if upload folder exists
            var imgDirectory = Path.Combine(_articleImageSaveFolder, id.ToString());

            // create folder if it doesn't exist            
            if (!Directory.Exists(imgDirectory))
            {
                Directory.CreateDirectory(imgDirectory);
            }

            List<KendoUploadImg> images = new List<KendoUploadImg>();

            // get file list from the directory
            var files = Directory.EnumerateFiles(imgDirectory);

            // iterate each img file
            foreach (string file in files)
            {
                FileInfo info = new FileInfo(file);
                int size = file.Length;
                string filename = Path.GetFileName(file);

                var image = new KendoUploadImg
                {
                    Name = filename,
                    //Size = size,
                    Type = "f"
                };

                images.Add(image);
            }

            return images;
        }