Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
SergRud
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 22
1

Передать в контроллер результат cropper (обрезанное изображение)

22.10.2019, 19:07. Просмотров 442. Ответов 11
Метки нет (Все метки)

Есть cropper:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
                   var image = document.getElementById('cropImage');
                    if (cropper) { cropper.destroy(); }
                    cropper = new Cropper(image, {
                        aspectRatio: 268 / 249,
                        dragMode: 'none',
                        autoCropArea: 1,
                        movable: false,
                        rotatable: false,
                        scalable: false,
                        zoomable: false,
                        background: false,
                        viewMode: 3
                    })
Его результат:
C#
1
 var cropData = cropper.getData(true);
Как его передать в контроллер. Пробовал
C#
1
formData.append("image", cropData);
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
                    
 
                   var formData = new FormData();
                    formData.append("image", files[0]);
                    formData.append("image", cropData);
                    var MyAppUrlSettings = {
                        MyUsefulUrl: '@Url.Action("ImageCreate", "Home")'
                    }
                    var request = new XMLHttpRequest();
 
                    request.open('POST', MyAppUrlSettings.MyUsefulUrl);
                    request.onload = function(e) {
                    if (requestreadyState === 4) {
                    if (request.status === 200) {
                            // тут установить src для картинки
                             } else {
                                 console.error(request.statusText);
                       }
                       }
                };
                    request.send(formData);
Не получается. В контроллер приходит null, т.е. crop = null
C#
1
2
3
4
        public ActionResult ImageCreate(HttpPostedFileBase image, HttpPostedFileBase crop)
        {
            ...................................................
        }
Может кто подскажет почему это происходит и что надо сделать. Заранее благодарен за помощь.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2019, 19:07
Ответы с готовыми решениями:

Передать данные в контроллер
Добрый день. Подскажите кто знает.. Во view есть раздел <script> </script> в котором много всего и...

Передать значения в контроллер
Есть контролер using System; using System.Collections.Generic; using System.Linq; using...

Передать js переменную в контроллер
Всем доброго дня! Вопрос следующий: 1. Есть представление, в котором выводится таблица....

Не получается передать результат парсинга в другой контроллер
Здравствуйте. Поясните почему возникает такая ситуация. У меня есть класс наследник NSOperation. В...

Вывести изображение, обрезанное согласно двумерному массиву
Итак, что дано: PictureBox; Bitmap; Картинка для работы. Что нужно : Вывести изображение,...

11
carrotik
141 / 109 / 36
Регистрация: 21.02.2019
Сообщений: 449
23.10.2019, 15:38 2
... попробуйте в javascript-e
Javascript
1
2
formData.append("image[0]", files[0]);
formData.append("image[1]", cropData);
а в контроллере

C#
1
2
3
4
public ActionResult ImageCreate(HttpPostedFileBase[] image)
        {
           // а тут прочитайте массив через foreach
        }
.. примерно, как тут ...
Uploading Multiple Files In ASP.NET MVC

..если платформа .net Core, то можно через IFormFile

Добавлено через 5 минут
.. кстати, в разметке формы у вас указано enctype = "multipart/form-data" .. ??
0
SergRud
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 22
23.10.2019, 16:00  [ТС] 3
Не помогло. Все равно возвращается null. Т.е.
C#
1
image[1]=null
.
Пробовал и через getCropperCanvas. На экран выводится обрезанное изображение.
А передать в контроллер и получитть в нем это изображение не получается.
0
carrotik
141 / 109 / 36
Регистрация: 21.02.2019
Сообщений: 449
23.10.2019, 16:05 4
SergRud, .. вы Fiddler-ом можете ваш запрос посмотреть, эта часть cropData вообще уходит на сервер, и в каком виде?
0
23.10.2019, 16:05
QuestionAnd
58 / 43 / 17
Регистрация: 12.08.2019
Сообщений: 161
23.10.2019, 16:11 5
SergRud,
попытался имитировать ваш код, через FormCollection даже что-то приходит
C#
1
2
[HttpPost]
public ActionResult Create(FormCollection formCollection)
в остальных случаях null
0
SergRud
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 22
23.10.2019, 16:34  [ТС] 6
QuestionAnd, приходит как я понял один элемент image[1].
Carrotik, а что такое Fildder ?
Спасибо, ребята, за помощь. Что-то я совсем запутался.
0
carrotik
141 / 109 / 36
Регистрация: 21.02.2019
Сообщений: 449
23.10.2019, 17:21 7
SergRud,
Telerik Fiddler - это инструмент типа прокси между браузером и сервером, который позволяет увидеть запрос из браузера и ответ сервера на этапе транспортировки ... он просто устанавливается и настраивается (то есть почти ничего делать не надо, только нажать на вкладку Inspectors) ... тут вам надо понять, правильно ли формируется та часть запроса, которая cropData ...

Добавлено через 20 минут
..а .. посмотрел я на ваш cropper, там же еще эти данные надо преобразовать или через toBlob или через toDataURL, тогда это будет как обычный файл для Upload ... вот тут посмотрите
How To Upload Cropped Image To Server
0
SergRud
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 22
23.10.2019, 20:26  [ТС] 8
Carrotik, спасибо за помощь. Да, я воспользовался и toDataURL, и toBlob:
C#
1
2
3
                    cropCanvas = cropper.getCroppedCanvas();
                    cropFile = cropCanvas.toDataURL('image/jpeg');
                    cropBlob = cropCanvas.toBlob;
cropFile - это обрезанное изображение. Я его вывожу в представлении CardCreate. Не могу понять как передать его в контроллер и каким образом получить его в этом контроллере.
Пробовал и так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
                    cropCanvas.toBlob(function (blob) {
                       var formData = new FormData();
                       formData.append("image[0]", files[0]);
                       formData.append("image[1]", cropData);
                       var MyAppUrlSettings = {
                           MyUsefulUrl: '@Url.Action("ImageCreate", "Home")'
                       }
                       var request = new XMLHttpRequest();
                       request.onreadystatechange = stateChange;
                       request.open('POST', MyAppUrlSettings.MyUsefulUrl);
                       request.send(formData);
                    })
Ничего не получается. Уже мозги закипают. Не знаю что делать.
0
carrotik
141 / 109 / 36
Регистрация: 21.02.2019
Сообщений: 449
24.10.2019, 10:14 9
Javascript
1
formData.append("image[1]", blob);
0
SergRud
0 / 0 / 0
Регистрация: 10.10.2019
Сообщений: 22
24.10.2019, 10:45  [ТС] 10
Немного разобрался. Чтобы передать в контроллер новые координаты изображения, я сделал следующее:
1. перевел cropData в json-строку:
C#
1
Json.stringify(cropData).
2. отправил json-данные в контроллер в новый action.
3. создал action - json:
C#
1
2
3
4
5
public JsonResult JsonCreate(string crop)
{
   var jsonData = crop;
   return Json(jsonData, JsonRequestBehavior.AllowGet);
}
Может кому-то поможет этот вариант. Если есть другие варианты, буду рад посмотреть.
Теперь попробую создать файл с новыми координатами. Пока не знаю как. Но попробую.
Если кто подскажет как, буду благодарен. Всем спасибо.

Добавлено через 3 минуты
Carrotik, я пробовал как ты предлагаешь, ничего не получилось. Я вроде бы разобрался. Спасибо тебе большое за помощь.
0
QuestionAnd
58 / 43 / 17
Регистрация: 12.08.2019
Сообщений: 161
24.10.2019, 11:13 11
Цитата Сообщение от SergRud Посмотреть сообщение
Немного разобрался. Чтобы передать в контроллер новые координаты изображения, я сделал следующее:
1. перевел cropData в json-строку:
ну так конечно же , cropData javascript
объект. как контроллер должен был обработать javascript объект ?
Цитата Сообщение от SergRud Посмотреть сообщение
Если есть другие варианты, буду рад посмотреть.
шаблон MVC как бэ намекает на модели ...
для данных нужна модель и ловить модель в контроллере.
0
carrotik
141 / 109 / 36
Регистрация: 21.02.2019
Сообщений: 449
24.10.2019, 11:21 12
.. так там строка? .. ёшкин кот ..
0
24.10.2019, 11:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2019, 11:21

Как с камеры посредством DirectShow выводить обрезанное и инвертированное по горизонтали изображение?
Мне нужно выводить не все изображение с камеры, а только вертикальный прямоугольник 3:4 по центру....

Передать таблицу в контроллер в MVC5
Всем привет! Как мне записать значения таблицы в бд? Насчет контроллера никаких мыслей нет. Думал...

Передать данные из представления в контроллер
Здравствуйте, в представлении есть не привязанное к модели поле: <div class="form-group"> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.