mrnagger Опубликовано 26 ноября, 2021 Поделиться Опубликовано 26 ноября, 2021 Я пытаюсь загрузить файл, используя внутренний IPS api и $_FILES php: <?php $_SERVER['SCRIPT_FILENAME'] = __FILE__; require_once 'init.php'; $init = \IPS\Session\Front::i(); echo "Filename: " . $_FILES['file']['name']."<br>"; echo "Type : " . $_FILES['file']['type'] ."<br>"; echo "Size : " . $_FILES['file']['size'] ."<br>"; echo "Temp name: " . $_FILES['file']['tmp_name'] ."<br>"; echo "Error : " . $_FILES['file']['error'] . "<br>"; $image = \IPS\Image::create( $_FILES['file']['tmp_name'] ); echo $image; ?> к сожалению, это не работает, кто-нибудь знает, какой API используется? спасибо. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 27 ноября, 2021 Поделиться Опубликовано 27 ноября, 2021 В функцию create надо передавать contents() объекта \IPS\File, т.е. содержимое, а не имя. Простой пример с чтением фотографии профиля: $member = \IPS\Member::load( 1 ); $img = \IPS\File::get( 'core_Profile', $member->pp_main_photo ); $image = \IPS\Image::create( $img->contents() ); header('Content-Type: image/jpg'); echo $image; Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mrnagger Опубликовано 27 ноября, 2021 Автор Поделиться Опубликовано 27 ноября, 2021 7 hours ago, Desti said: В функцию create надо передавать contents() объекта \IPS\File, т.е. содержимое, а не имя. Простой пример с чтением фотографии профиля: $member = \IPS\Member::load( 1 ); $img = \IPS\File::get( 'core_Profile', $member->pp_main_photo ); $image = \IPS\Image::create( $img->contents() ); header('Content-Type: image/jpg'); echo $image; нужно ли мне передавать объект \IPS\File? или это может быть любой IMG файл на диске? например: $uploaddir = 'uploads/'; $uploadfile = $uploaddir . basename($_FILES['image']['name']); if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) { $image = \IPS\Image::create( $uploadfile ); echo "Изображение успешно загружено."; } else { echo "Загрузка изображения не удалась."; } Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 27 ноября, 2021 Поделиться Опубликовано 27 ноября, 2021 Вы опять пытаетесь подсунуть в \IPS\Image::create() имя файла! Я же русскими буквами написал - содержимое в оригинальном виде, т.е. $image = \IPS\Image::create( file_get_contents($uploadfile) ); И ваш if-else проверяет, скопировался ли файл, а не успешность преобразования в изображение. У create() своя проверка внутри, он выбросит исключение, если файл не картинка. 6 часов назад, mrnagger сказал: или это может быть любой IMG файл на диске? Любой. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mrnagger Опубликовано 28 ноября, 2021 Автор Поделиться Опубликовано 28 ноября, 2021 3 hours ago, Desti said: Вы опять пытаетесь подсунуть в \IPS\Image::create() имя файла! Я же русскими буквами написал - содержимое в оригинальном виде, т.е. $image = \IPS\Image::create( file_get_contents($uploadfile) ); И ваш if-else проверяет, скопировался ли файл, а не успешность преобразования в изображение. У create() своя проверка внутри, он выбросит исключение, если файл не картинка. Любой. С вашей помощью я пришел к такому решению (оно работает, но мне не очень нравится делать это через вложения): <?php $_SERVER['SCRIPT_FILENAME'] = __FILE__; require_once 'init.php'; $init = \IPS\Session\Front::i(); $file = \IPS\File::create( 'core_Attachment', basename($_FILES['file']['name']), NULL, NULL, FALSE, $_FILES['file']['tmp_name'] ); $attachment = $file->makeAttachment('', \IPS\Member::load( 1 ) ); $fileName = htmlspecialchars( $attachment['attach_file'], ENT_DISALLOWED, 'UTF-8', TRUE ); $image = <<<IMAGE <a href="<fileStore.core_Attachment>/{$file}" class="ipsAttachLink ipsAttachLink_image" style="float:left;"><img data-fileid="{$attachment['attach_id']}" src="<fileStore.core_Attachment>/{$file}" class="ipsImage ipsImage_thumbnailed" style="margin:10px;" alt="{$fileName}"></a> IMAGE; ?> Хотя это и не идеально, но возможно ли сделать загрузку без вложений? Большое спасибо за вашу помощь! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 28 ноября, 2021 Поделиться Опубликовано 28 ноября, 2021 9 часов назад, mrnagger сказал: но возможно ли сделать загрузку без вложений? Да, в чем проблема? В этом примере if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) { $image = \IPS\Image::create( file_get_contents($uploadfile) ); } весь функционал в двух строчках. Через банальную upload форму загружаем файл, копируем его куда нужно, превращаем в изображение. Но я до сих пор не понимаю, зачем вам это нужно и что вы хотите сделать. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Axxxmatov Опубликовано 29 марта, 2023 Поделиться Опубликовано 29 марта, 2023 Подскажите пожалуйста, не нашел тему решил тут написать. Как включить файлы на сайте? как тут Запрошенный URL /files/category/ не был найден на этом сервере. такая ошибка у меня при воде ссылки на файлы Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.