Не загружается файл через хук formit2file
Здравствуйте.
Форма уходит, ошибок нет, файл загружается в нужную папку.
А в админке, при открытии ресурса в ТВ отображается вот это: 1608.jpg||image/jpeg||/tmp/php0FgC5A||0||882402
В самой форме вот так:
Что я делаю не так?
Спасибо и с праздниками!
Форма уходит, ошибок нет, файл загружается в нужную папку.
А в админке, при открытии ресурса в ТВ отображается вот это: 1608.jpg||image/jpeg||/tmp/php0FgC5A||0||882402
В самой форме вот так:
[[!FormIt?
&hooks=`formit2resource,formit2file,spam,email,redirect`
&emailTo=`anton@maxmg.com`
&redirectTo=`1`
]]
<form action="[[~[[*id]]]]" method="post" class="form-horizontal" enctype="multipart/form-data">
<input id="afb1" type="file" maxlength="100000" name="afb_1" value="[[!+fi.afb_1]]">
<button type="submit" class="btn btn-default">Отправить</button>
</form>В логах все чисто.Что я делаю не так?
Спасибо и с праздниками!
<?php
// initialize output;
$output = true;
$counter = 1;
// valid extensions
$ext_array = array('jpg', 'png', 'JPG');
$mydir = $hook->getValue('resource_id'); // Path from root that user specifies
// create unique path for this form submission
$uploadpath = 'assets/user_images/'.$mydir.'/';
// get full path to unique folder
$target_path = $modx->config['base_path'] . $uploadpath;
// get uploaded file names:
$submittedfiles = array_keys($_FILES);
// loop through files
foreach ($submittedfiles as $sf) {
// Get Filename and make sure its good.
$filename = basename( $_FILES[$sf]['name'] );
// Get file's extension
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$ext = mb_strtolower($ext); // case insensitive
// is the file name empty (no file uploaded)
if($filename != '') {
// is this the right type of file?
if(in_array($ext, $ext_array)) {
// clean up file name and make unique
$filename = $counter . '.' . $ext;
$filename = str_replace(' ', '_', $filename); // spaces to underscores
$filename = date("Y-m-d_G-i-s_") . $filename; // add date & time
// full path to new file
$myTarget = $target_path . $filename;
// create directory to move file into if it doesn't exist
mkdir($target_path, 0755, true);
// is the file moved to the proper folder successfully?
if(move_uploaded_file($_FILES[$sf]['tmp_name'], $myTarget)) {
// set a new placeholder with the new full path (if you need it in subsequent hooks)
$myFile = $uploadpath . $filename;
$hook->setValue($sf,$myFile);
$hook->setValue('myfile',$myFile);
// set the permissions on the file
if (!chmod($myTarget, 0644)) { /*some debug function*/ }
} else {
// File not uploaded
$errorMsg = 'There was a problem uploading the file.';
$hook->addError($sf, $errorMsg);
$output = false; // generate submission error
}
} else {
// File type not allowed
$errorMsg = 'Type of file not allowed.';
$hook->addError($sf, $errorMsg);
$output = false; // generate submission error
}
// if no file, don't error, but return blank
} else {
$hook->setValue($sf, '');
}
$counter = $counter + 1;
}
return $output;Решение здесь. Комментарии: 15
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Попробуй дебажить через
— проверь значения $myFile и $myTarget. Если с ними все ок, проблема с функцией $hook->setValue.
Не знаю как это сделать, поэтому обращаюсь за помощью. Помогите, пожалуйста.
Но вообще, есть мысль, что это проблема хостера. Хостер GoDaddy. А у Боба Рэя видел часто посты, что у GoDaddy постоянные проблемы с MODX Revo.
Все же, как узнать проблему? Посоветуйте, пожалуйста.
в вышеописанный код ПОСЛЕ определения этих переменных, попробовали создать новую страницу с прикрепленной картинкой, и оба раза вам вернулось пустое значение?
Выглядит как ваш случай — forums.modx.com/thread/47603/solved-file-upload-with-formit?page=3#dis-post-458859
Вот такую ошибку показывает:
На вашем месте, я бы подошел к вопросу с другой стороны: я так понимаю, что formit2resource — модуль для создания страниц с админки + рассылка?
Может, проще создавать страницы через ticketForm + совершать рассылку плагином? В ticketForm уже по-умолчанию есть удобная форма для загрузки изображений, но если она не подходит — всегда можно решить задачу через плагин или платные аналоги загрузчиков.
Все в порядке, все поля заполняются, только поле с файлом (фото) неправильно закачивается.
То есть formit2resource работает исправно, а formit2file не работает. Дней 5 уже отвлекаюсь на это, сниппетов 7 разных перепробовал — никакие не добавляют файл корректно. То есть, все закачивают, но в самом ТВ (тип Изображение) вот такое содержимое 1608.jpg||image/jpeg||/tmp/php0FgC5A||0||882402
Что делать?
+ включить на событие OnDocFormSave и добавить ограничивающих условий по вкусу.
Как альтернатива, можете на то же событие и с теми же условиями самолично перехватывать через POST значение нужной формы с картинкой, грузить ее и записывать путь в тв-поле.
Но все же хочется решить эту проблему.
Вот что показывает вывод ТВ с неправильной картинкой site/connectors/system/phpthumb.php?w=400&h=400&aoe=0&far=0&src=1608.jpg||image/jpeg||C:\OpenServer\userdata\temp\phpC8C1.tmp||0||882402&source=2
В самой форме сделал так:
Нашел здесь аналогичную проблему у иностранца. Так все рванулись ему помогать :)
Я уже недели 1,5 каждый день ищу решение этой проблемы.