MVC3 загружать загружать изображения в папки - PullRequest
3 голосов
/ 14 сентября 2011

Я использую uploadify для загрузки нескольких изображений с прогрессом в ASP.NET MVC3 и хочу загрузить, скажем, URL-адрес Gallery / Upload / 2 в папку с именем 2 и Gallery / Upload / 3 в папку 3 и так далее. Я просто не знаю как. Чтобы начать загрузку, я использовал этот образец и изменил сценарий загрузки примера:

public string Upload(HttpPostedFileBase fileData)
        {
            var id = 2;
            var fotka = new Photo();
            fotka.GalleryId = id;
            fotka.Description = fileData.FileName;
            fotka.Name = fileData.FileName;
            db.Photos.Add(fotka);
            db.SaveChanges();
            var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileData.FileName);
            var fileName = Path.GetFileName(fileData.FileName);
            string path = Server.MapPath("~/Fotky/") + id.ToString() + "\\" + fileNameWithoutExtension;
            // var path = Path.Combine(Server.MapPath("~/Fotky/"), galleryId.ToString(), "/", fileNameWithoutExtension);
            using (var input = new Bitmap(fileData.InputStream))
            {
                int width;
                int height;
                if (input.Width > input.Height)
                {
                    width = 128;
                    height = 128 * input.Height / input.Width;
                }
                else
                {
                    height = 128;
                    width = 128 * input.Width / input.Height;
                }
                using (var thumb = new Bitmap(width, height))
                using (var graphic = Graphics.FromImage(thumb))
                {
                    graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                    graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                    graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

                    graphic.DrawImage(input, 0, 0, width, height);
                    System.IO.Directory.CreateDirectory(Server.MapPath("~/Fotky/") + id.ToString());
                    using (var output = System.IO.File.Create(path + "_small" + Path.GetExtension(fileName)))
                    {
                        thumb.Save(output, System.Drawing.Imaging.ImageFormat.Jpeg);
                    }
                }
            }
            fileData.SaveAs(path + Path.GetExtension(fileName));

            return "ok";
        }

Как вы можете видеть, я использую id как 2 по умолчанию, но я хочу получить его из параметров, это возможно? И как? Спасибо

Никто не знает ответа? Это действительно важно для меня

1 Ответ

4 голосов
/ 15 сентября 2011

Вы можете сделать так, чтобы действие вашего контроллера приняло идентификатор в качестве аргумента действия:

public string Upload(HttpPostedFileBase fileData, string id)
{
    ...
}

, а затем передал этот идентификатор при настройке плагина:

$("#fileuploader").fileUpload({
    'uploader': '@Url.Content("~/Scripts/uploader.swf")',
    'cancelImg': '@Url.Content("~/Images/cancel.png")',
    'buttonText': 'Select Image',
    'script': '@Url.Action("Upload", "Home", new { id = "2" })',
    'folder': '@Url.Content("~/uploads")',
    'fileDesc': 'Image Files',
    'fileExt': '*.jpg;*.jpeg;*.gif;*.png',
    'multi': true,
    'auto': true
});
...