Tickets: resize и upload изображения в tv с фронта
Добрый день!
Подскажите пожалуйста.
На frontend есть форма для создания тикета.
Через поле image-log (TV — изображение) загружается картинка на сервер и записывается путь до неё в tv.
Или смотрел в сторону cropit, но здесь как правильно передать в input и конвертировать base64 в картинку в рамках этого сниппета.
Спасибо
Подскажите пожалуйста.
На frontend есть форма для создания тикета.
Через поле image-log (TV — изображение) загружается картинка на сервер и записывается путь до неё в tv.
<div class="form-group">
<label for="ticket-photo">Изображение</label>
<input type="file" name="image-log" class="form-control" id="ticketphoto"/>
<span class="error" id="error_ticketphoto"></span>
</div>Решение загрузки и записи было найдено здесь https://modx.pro/help/6467/ и осуществляется с помощью плагина на событие OnDocFormSave.<?php
if ($modx->event->name == 'OnDocFormSave') {
if($mode == 'new'){
if (!empty($_FILES)) {
$id = $resource->get('id');
$folder = 'images/log'; // имя папки куда грузить, должна быть создана (в корне сайта)
$path = MODX_BASE_PATH.'/'.$folder.'/'; // Путь от корня до нужного места
$tv_name = 'image-logo-project'; // имя тв
// все значения файла
$nameFile = $_FILES['image-logo-project']['name'];
$typeFile = $_FILES['image-logo-project']['type'];
$tmpNameFile = $_FILES['image-logo-project']['tmp_name'];
$sizeFile = $_FILES['image-logo-project']['size'];
$limit_size = 3*1024*1024; // 3 Mb - максимальный размер загружаемого файла
$file_types = array("jpeg", "jpg", "png"); // доступные расширения для загрузки
$extensionFile = pathinfo($nameFile, PATHINFO_EXTENSION);
$NewNameFile = 'project_'.$id.'_'.date("m_d_y").'.'.$extensionFile; // наше новое имя файла
if(is_uploaded_file($tmpNameFile)) // проверяем зашёл ли файл
{
if($limit_size > $sizeFile)
{ // Проверка на размер
if(in_array($extensionFile, $file_types)){ // проверка на тип
move_uploaded_file($tmpNameFile, $path.$NewNameFile); // загрузка файла
$resource->setTVValue($tv_name, $folder.'/'.$NewNameFile); // запись в ТВ
}
}
}
}
}
}Пробовал добавить уменьшение и обрезку, но ничего не получилось поскольку в php не силен. Может кто помочь, что нужно дописать, чтобы кроме загрузки и записи в tv, изображение можно было уменьшить и обрезать при необходимости.Или смотрел в сторону cropit, но здесь как правильно передать в input и конвертировать base64 в картинку в рамках этого сниппета.
Спасибо
Комментарии: 1
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Собственно:
Теперь в передается картинка, которая в теории должна обрабатываться плагином, описанным выше на OnDocFormSave
Возникла ожидаемая проблема картинка передается в base64, возник вопрос как в рамках данного плагина декодировать bas64 в картинку -> ее загрузка в директорию и запись в tv в бд
Нашел для cropit обработку:
и
Поскольку практически не знаком в php, получилось
Разумеется в tv в бд записывается «images/logo/id_1_02_01_17.jpg». Но куда дальше смотреть не знаю.
Может кто помочь?