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 используется? спасибо. Link to comment https://ipbmafia.ru/topic/23826-zagruzka-fajla-izobrazheniya-s-pomoshyu-vnutrennego-interfejsa-ips-api/ Share on other sites Больше вариантов
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; Link to comment https://ipbmafia.ru/topic/23826-zagruzka-fajla-izobrazheniya-s-pomoshyu-vnutrennego-interfejsa-ips-api/?&do=findComment&comment=175182 Share on other sites Больше вариантов
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 "Загрузка изображения не удалась."; } Link to comment https://ipbmafia.ru/topic/23826-zagruzka-fajla-izobrazheniya-s-pomoshyu-vnutrennego-interfejsa-ips-api/?&do=findComment&comment=175186 Share on other sites Больше вариантов
27 ноября, 20212 yr comment_175191 Вы опять пытаетесь подсунуть в \IPS\Image::create() имя файла! Я же русскими буквами написал - содержимое в оригинальном виде, т.е. $image = \IPS\Image::create( file_get_contents($uploadfile) ); И ваш if-else проверяет, скопировался ли файл, а не успешность преобразования в изображение. У create() своя проверка внутри, он выбросит исключение, если файл не картинка. 6 часов назад, mrnagger сказал: или это может быть любой IMG файл на диске? Любой. Link to comment https://ipbmafia.ru/topic/23826-zagruzka-fajla-izobrazheniya-s-pomoshyu-vnutrennego-interfejsa-ips-api/?&do=findComment&comment=175191 Share on other sites Больше вариантов
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; ?> Хотя это и не идеально, но возможно ли сделать загрузку без вложений? Большое спасибо за вашу помощь! Link to comment https://ipbmafia.ru/topic/23826-zagruzka-fajla-izobrazheniya-s-pomoshyu-vnutrennego-interfejsa-ips-api/?&do=findComment&comment=175193 Share on other sites Больше вариантов
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 форму загружаем файл, копируем его куда нужно, превращаем в изображение. Но я до сих пор не понимаю, зачем вам это нужно и что вы хотите сделать. Link to comment https://ipbmafia.ru/topic/23826-zagruzka-fajla-izobrazheniya-s-pomoshyu-vnutrennego-interfejsa-ips-api/?&do=findComment&comment=175216 Share on other sites Больше вариантов
29 марта, 20231 yr comment_191358 Подскажите пожалуйста, не нашел тему решил тут написать. Как включить файлы на сайте? как тут Запрошенный URL /files/category/ не был найден на этом сервере. такая ошибка у меня при воде ссылки на файлы Link to comment https://ipbmafia.ru/topic/23826-zagruzka-fajla-izobrazheniya-s-pomoshyu-vnutrennego-interfejsa-ips-api/?&do=findComment&comment=191358 Share on other sites Больше вариантов
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.