Мой проект берет загруженный файл от пользователя, а также некоторые точки данных из JCrop и обрезает изображение до выбранной части. Затем обрезанному изображению присваивается новое имя, и оно сохраняется на сервере. Однако изображение сохраняется на сервере дважды, один раз с новым именем и еще раз с совершенно другим именем.
КОНТРОЛЛЕР
[HttpPost]
[ValidateAntiForgeryToken]
[ValidImageFile]
public ActionResult _Image(ImageViewModel VM)
{
if (ModelState.IsValid)
{
//Convert from HttpPostedBase to WebImage, then crop the image
byte[] data;
using (Stream inputStream = VM.uploadFile.InputStream)
{
MemoryStream memoryStream = inputStream as MemoryStream;
if (memoryStream == null)
{
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
}
data = memoryStream.ToArray();
}
var Image = new WebImage(data);
int T = VM.y1;
int L = VM.x1;
int B = Image.Height - VM.y2;
int R = Image.Width - VM.x2;
Image.Crop(T, L, B, R);
//if the user already has an image for their character, delete it.
string oldImage = HttpContext.Server.MapPath(db.Characters.Find(VM.Id).imagePath);
if (System.IO.File.Exists(oldImage))
{
System.IO.File.Delete(oldImage);
}
//generate random file name path, save file to server.
var fileName = Guid.NewGuid().ToString();
var filePath = Path.Combine("/Content/Images/charPhoto/", fileName);
var uploadUrl = HttpContext.Server.MapPath(filePath);
Image.Save(uploadUrl);
//save file path to db.
filePath = filePath + "." + Image.ImageFormat;
db.Characters.Find(VM.Id).imagePath = filePath;
db.SaveChanges();
//returns the image path to jQuery.
return Content(filePath);
}
return View();
}
VIEWMODEL
public class ImageViewModel
{
public Guid? Id { get; set; }
public string ImagePath { get; set; }
public HttpPostedFileBase uploadFile { get; set; }
[Required]
public int x1 { get; set; }
[Required]
public int y1 { get; set; }
[Required]
public int x2 { get; set; }
[Required]
public int y2 { get; set; }
}
подтверждение дублирования:
Кто-нибудь может мне объяснить, почему это происходит? Это какая-то преднамеренная часть WebImage для резервного копирования данных? Если нет, то что я сделал не так, и что я должен делать вместо этого?