Posted 26 ноября, 20212 yr comment_175173 Я пытаюсь загрузить файл, используя внутренний 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 используется? спасибо.
27 ноября, 20212 yr comment_175182 В функцию 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;
27 ноября, 20212 yr Author comment_175186 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 "Загрузка изображения не удалась."; }
27 ноября, 20212 yr comment_175191 Вы опять пытаетесь подсунуть в \IPS\Image::create() имя файла! Я же русскими буквами написал - содержимое в оригинальном виде, т.е. $image = \IPS\Image::create( file_get_contents($uploadfile) ); И ваш if-else проверяет, скопировался ли файл, а не успешность преобразования в изображение. У create() своя проверка внутри, он выбросит исключение, если файл не картинка. 6 часов назад, mrnagger сказал: или это может быть любой IMG файл на диске? Любой.
28 ноября, 20212 yr Author comment_175193 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; ?> Хотя это и не идеально, но возможно ли сделать загрузку без вложений? Большое спасибо за вашу помощь!
28 ноября, 20212 yr comment_175216 9 часов назад, mrnagger сказал: но возможно ли сделать загрузку без вложений? Да, в чем проблема? В этом примере if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) { $image = \IPS\Image::create( file_get_contents($uploadfile) ); } весь функционал в двух строчках. Через банальную upload форму загружаем файл, копируем его куда нужно, превращаем в изображение. Но я до сих пор не понимаю, зачем вам это нужно и что вы хотите сделать.
29 марта, 20231 yr comment_191358 Подскажите пожалуйста, не нашел тему решил тут написать. Как включить файлы на сайте? как тут Запрошенный URL /files/category/ не был найден на этом сервере. такая ошибка у меня при воде ссылки на файлы
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.