PHP → Загрузка картинок на ImageShack.us

10.09.2010

Код загружает файл image.jpg, находящийся в одной директории со скриптом, на сервер ImageShack.us, и выводит прямую ссылку на загруженное изображение:

$filename = dirname(__FILE__) . '/image.jpg';

$postData = array(
    'fileupload' => '@' . $filename,
    'key'        => '*********', // ключ полученный на странице http://stream.imageshack.us/xmlapi/
    'xml'        => 'yes',
);

$ch = curl_init('http://www.imageshack.us/upload_api.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$result = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($result);

if (!$xml)
{
    echo 'Error';
}
else if (isset($xml->error))
{
    echo 'Error: ' . $xml->error;
}
else
{
    echo 'Image URL: ' . $xml->links->image_link;
}

Подробнее в документации.

Похожие записи

Комментарии

Гость
11.09.2010, 09:58

Спасибо за скрипт! А есть такой же для какого-нибудь российского картинкообменника? типа radikal или fastpic?

насколько знаю, у radikal и fastpic нет своего api, поэтому придётся эмулировать браузер с помощью curl и заниматься парсингом

интересно теоретически: если все картинки скажем галереи держать на ImageShack.us а не на своем сайте - это скажется на производительности сайта?

если картинок ОЧЕНЬ много, то можно сэкономить на запросах к серверу и использовать ImageShack в качестве CDN, но это не лучший вариант - файлы от туда когда-нибудь удалят.

Гость
11.03.2011, 23:41

Не работает, пишет
Wrong file type detected for file image.jpg:application/octet-stream

Всё перепробовал, никак не получается убрать эту ошибку.

сервер не правильно настроен, можно попробовать указать тип вручную:

switch ($fileExt) {
    case 'jpg' : $mime = 'image/jpeg'; break;
    case 'jpeg': $mime = 'image/jpeg'; break;
    case 'gif' : $mime = 'image/gif';  break;
    case 'png' : $mime = 'image/png';  break;
    default    : $mime = 'image/jpg';  break;
}

$postData = array(
    'fileupload' => '@' . $filename . ';type=' . $mime,
    // ...
);

А сколько ресайзов картинки хранит у себя Imageshack? И как менять ссылку для их просмотра?

подумываю просто на интернет магазин вбахать такой скрипт. Но чет сервер медленно фотки выдает.

Добавить комментарий