2013-11-07 3 views
0

Я пытаюсь захватить изображение с внешнего сервера с fsockopen в PHP. Мне нужно получить данные изображения в переменную в кодировке BASE64 в моем коде. Изображение является файлом типа .jpeg и представляет собой небольшое изображение.PHP - получить изображение с fsockopen

Не удалось найти ответы на вопросы Google после некоторых поисков. Так что я задаюсь вопросом, возможно ли это даже прямо, без каких-либо странных обходных решений?

Любая помощь и/или предложения очень ценятся!

Заметим, что allow_url_fopen отключен на моем сервере из-за угроз безопасности.

Это мой текущий код:

$wn_server = "111.111.111.111"; 

$url = "GET /webnative/portalDI?action=getimage&filetype=small&path=".$tmp." HTTP/1.1\r\n"; 

$fp = fsockopen($wn_server,80,$errno,$errstr,15); 
stream_set_timeout($fp, 30); 

$imageDataStream = ""; 

if (!$fp) { 
    echo "Error " . $errno . "(" . $errstr . ")"; 
} else { 
    $out = $url; 
    $out .= "Host: " . $wn_server . "\r\n"; 
    $out .= "Authorization: Basic " . $_SESSION['USER'] . "\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    $out .= "\r\n"; 
    fwrite($fp, $out); 
    while (!feof($fp)) { 
     $imageDataStream .= fgets($fp, 128); 
    } 
    fclose($fp); 
} 

ответ

0

ли вы имеете в виду что-то вроде этого:

$ch = curl_init(); 

// Authentication 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, 'username:password'); 

// Fetch content as binary data 
curl_setopt($ch, CURLOPT_URL, $urlToImage); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// Fetch image data 
$imageData = curl_exec($ch); 

curl_close($ch); 

// Encode returned data with base64 
echo base64_encode($imageData); 
+0

Спасибо. Но я пропустил (мой плохой). Я хотел сказать «fsockopen» вместо «cURL» –

+0

Afaik 'fsockopen' не работает, если' allow_url_fopen' отключен. Но почему бы не использовать «завиток»? – TiMESPLiNTER

+0

Это потому, что мне нужно иметь аутентификацию, прежде чем я смогу получить доступ к изображению на внешнем сервере. У меня есть Google'd в течение нескольких дней, и я не могу получить пример, который работает с 'cURL'. Если у вас есть одно: тогда потрясающе! –

0

Попробуйте происходит некорректно

header('Content-Type: image/png'); 
echo $imageData; 
Смежные вопросы