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; }
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; }