При помощи cURL в PHP скрипте находящемся на моем хостинге, загружаю изображение на удаленный сайт. И все бы ничего но не смотря на расширение файла(его расширение *.jpg) тип передаваемого файла всегда, при любых расширениях файла: application/octet-stream из за чего удаленный сервер на который я загружаю файл с помощью моего скрипта не дает загрузить файл т.к. тип файла: application/octet-stream а не image/jpeg как и должно быть при передачи файла с расширением *.jpg На локальной машине скрипт работает и правильно определяет тип передаваемого файла, а вот на хостинге не верно определяет тип. Можно ли как то вручную изменить тип?
Можно пример? Сайт _http://pornizer.com/video/add/ только зарегистрироваться нужно. Там внизу есть: Оформление и скриншоты: Обложка *: Задник: Скриншот:
PHP: <? $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://pornizer.com/video/add/'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_COOKIEFILE, $dir."pornizer.txt"); curl_setopt($curl, CURLOPT_ENCODING,'gzip,deflate'); curl_setopt($curl, CURLOPT_POSTFIELDS, array( 'title' => 'nazvanie', 'release' => '0', 'studio' => '', 'director' => '', 'starring' => 'UNKNOWN+ACTRESS', 'description' => 'opisanie', 'service[]' => 'filesonic', 'links[]' => 'filesonic_links', 'service[]' => 'wupload', 'links[]' => 'wupload_links', 'service[]' => 'uploaded', 'links[]' => 'ul_links', 'password' => '', 'back_cover' => '', 'screenshot' => '', 'add' => '+%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B0%D0%B5%D1%82%D1%81%D1%8F...+', 'category' => 'short_videos', 'genre[hd_dvd]' => 'on', 'front_cover' => "@".'D:\xxx\1.GIF' )); echo $res = curl_exec($curl); ?>
а почему в примере gif? попробуй воспользоваться вот этой информацией (http://php.net/manual/ru/function.curl-setopt.php): CURLOPT_POSTFIELDS Все передаваемые данные для передачи в HTTP POST-запросе. Для передачи файла, укажите перед именем файла @, а также используйте полный путь к файлу. Тип файла также может быть указан с помощью формата ';type=mimetype', следующим за именем файла. Этот параметр может быть передан как в качестве url-закодированной строки, наподобие 'para1=val1¶2=val2&...', так и в виде массива, ключами которого будут имена полей, а значениями - их содержимое. Если value является массивом, заголовок Content-Type будет установлен в значение multipart/form-data. Начиная с версии PHP 5.2.0, файлы, передаваемые в этот параметр, с префиксом @, должны быть в виде массива.
PHP: $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://pornizer.com/video/add/'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_COOKIEFILE, $dir."pornizer.txt"); curl_setopt($curl, CURLOPT_ENCODING,'gzip,deflate'); curl_setopt($curl, CURLOPT_POSTFIELDS, array( 'title' => 'nazvanie', 'release' => '0', 'studio' => '', 'director' => '', 'starring' => 'UNKNOWN+ACTRESS', 'description' => 'opisanie', 'service[]' => 'filesonic', 'links[]' => 'filesonic_links', 'service[]' => 'wupload', 'links[]' => 'wupload_links', 'service[]' => 'uploaded', 'links[]' => 'ul_links', 'password' => '', 'back_cover' => '', 'screenshot' => '', 'add' => '+%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B0%D0%B5%D1%82%D1%81%D1%8F...+', 'category' => 'short_videos', 'genre[hd_dvd]' => 'on', 'front_cover' => '@D:\xxx\1.gif;type=image/gif')); echo $res = curl_exec($curl); Почему то вместо вывода получаю пустую белую страничку. В чем может быть ошибка?
Все очень просто нужно добавить заголовок Content-type: image/jpeg curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: image/jpeg'));
devzorg по очевидным причинам ваше предложение работать не будет Правильный ответ дан тут: https://forum.antichat.ru/showpost.php?p=2836526&postcount=7