Помогите забрать картинку [php]

Статус
В этой теме нельзя размещать новые ответы.

KillDead

Хранитель порядка
Регистрация
11 Авг 2006
Сообщения
894
Реакции
579
Уже мозги кипят.:mad:
Есть картинка на неком хосте http: //test:60/foto/qqq.jpg?cvt=jpeg
Ввожу через браузер - показывает её.
Но пробовал забрать через curl, file_get_contents, fsockopen- выдаёт ошибку 403, причём он говорит


While trying to retrieve the URL: http://test:60/foto/qqq.jpg? The following error was encountered:
Без get данных. Это он обрезает при выводе ошибки или хочет приконектится к нему без них- непонятно.
Может дело в порте? Может кто помочь?


ответ
HTML:
HTTP/1.0 403 Forbidden Server: squid/2.6.STABLE16 Date: Fri, 29 Aug 2008 19:23:42 GMT Content-Type: text/html Content-Length: 1120 Expires: Fri, 29 Aug 2008 19:23:42 GMT X-Squid-Error: ERR_ACCESS_DENIED 0 X-Cache: MISS from SLIET-PROXY-THREE X-Cache-Lookup: NONE from SLIET-PROXY-THREE:8080 Via: 1.0 SLIET-PROXY-THREE:8080 (squid/2.6.STABLE16) Proxy-Connection: close
 


Ты правильно указал хост? у меня никакая картинка не открывается.
 
А что очень большая картинка? Нельзя клавишу Print Screen (PrtScn) использовать?
При вводе url в браузере ничего не вижу. Ты уверен что хост правильно написал??? test:60?? :confused:
 
Попробуй вместо ? указать её html-сущность.
 
вот занятное обсуждение про забор картинок
Скрытое содержимое доступно для зарегистрированных пользователей!

может быть стоит раздуть пакет на доп.поля? разные там рефереры и прочие полезности которые может учитывать хост где картинка? там авторизации случаем не наблюдается?
вот ещё примерчик
Скрытое содержимое доступно для зарегистрированных пользователей!
 
KillDead, покажи код.
 
Реффер передавай с curlом, и все ок будет.
 
Вот попробуй готовый код (с ресайзом картинок:(
PHP:
$uploadPath = './cache/';
fm_copyimage($pictureUrl, 200, 150, true, "img1", "1");

function fm_copyimage($sourceFileName, $width = null, $height = null, $saveProportions = true, $title, $id)
{
	global $uploadPath;

	$imageInfo = @getimagesize($sourceFileName);
	if (!$imageInfo) {
		return null;
	}
	switch ($imageInfo["mime"]) {
		case "image/gif":
			$ext = "gif";
			break;
		case "image/jpeg":
			$ext = "jpg";
			break;
		case "image/png":
			$ext = "png";
			break;
    }
	$fullFileName = sprintf("./%s/%s.%s", $uploadPath, $title, $ext);
	if (null !== $width && null !== $height && extension_loaded("gd")) {
		$origFileName = sprintf("./%s/orig_%s.%s", $uploadPath, $title, $ext);
		usleep(500000);
		if (function_exists("curl_init")) {
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $sourceFileName);
			curl_setopt($ch, CURLOPT_TIMEOUT, 300);
//			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");


			$st = curl_exec($ch);
			$fd = @fopen($origFileName, "w");
			fwrite($fd, $st);
			@fclose($fd);

			curl_close($ch);
		} else {
			$fp = @fopen($sourceFileName, "rb");
			$fd = @fopen($origFileName, "w");
			if ($fp && $fd) {
				while (!feof($fp)) {
					$st = fread($fp, 4096);
					fwrite($fd, $st);
				}
			}
			@fclose($fp);
			@fclose($fd);
		}
		$result = fm_imageresize($origFileName, $fullFileName, $width, $height, $saveProportions);
		@unlink($origFileName);
	} else {
		$result = copy($sourceFileName, $fullFileName);
	}
	if ($result) {
		return $fullFileName;
	} else {
		return false;
	}
	return false;
}

function fm_imageresize($sourceFileName, $destinationFileName, $width, $height, $saveProportions = true)
{
	if (is_file($sourceFileName)) {
		$imageInfo = @getimagesize($sourceFileName);
		if (!$imageInfo) {
			return false;
		}
	} else {
		return false;
	}
	if ($imageInfo[0] <= $width && $imageInfo[1] <= $height) {
		if ($sourceFileName == $destinationFileName) {
			return null;
		} elseif (copy($sourceFileName, $destinationFileName)) {
			return true;
		} else {
			return false;
		}
	} else {
		switch ($imageInfo["mime"]) {
			case "image/gif":
				$sourceImage = imagecreatefromgif($sourceFileName);
				break;
            case "image/jpeg":
				$sourceImage = imagecreatefromjpeg($sourceFileName);
				break;

			case "image/png":
				$sourceImage = imagecreatefrompng($sourceFileName);
				break;
		}
		if ((boolean)$saveProportions) {
			$imageWidth  = $imageInfo[0];
			$imageHeight = $imageInfo[1];
			if ($imageInfo[0] > $width) {
				$imageWidth  = $width;
				$imageHeight = ($imageInfo[1] / ($imageInfo[0] / $width));
			}
			if ($imageHeight > $height) {
				$imageWidth  = ($imageWidth / ($imageHeight / $height));
				$imageHeight = $height;
			}
		} else {
			$imageWidth  = $width;
			$imageHeight = $height;
		}
		$destinationImage = imagecreatetruecolor($imageWidth, $imageHeight);
		if (function_exists("imagecopyresampled")) {
			imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0,
									$imageWidth, $imageHeight,
									$imageInfo[0], $imageInfo[1]);
		} else {
			imagecopyresized($destinationImage, $sourceImage, 0, 0, 0, 0,
									$imageWidth, $imageHeight,
									$imageInfo[0], $imageInfo[1]);
		}
		switch ($imageInfo["mime"]) {
			case "image/gif":
				if (function_exists("imagegif")) {
					$result = imagegif($destinationImage, $destinationFileName);
				} else {
					$destinationFileName = sprintf("%s.png", $destinationFileName);
					$result = imagepng($destinationImage, $destinationFileName);
				}
				break;
			case "image/jpeg":
				$result = imagejpeg($destinationImage, $destinationFileName, 80);
				break;
			case "image/png":
				$result = imagepng($destinationImage, $destinationFileName);
				break;
			default:
				$result = false;
		}
	}
	return $result;
}
 
Вроде проясняется. Соединение с картинкой идёт через squid . Затем js запрашивает сервер, он кеширует картинку и она становится доступной.
Щас хочу приконектится к этому урлу через прокси получаю ответ:
Education Bradford Security Event Notification
Access to test.ru denied. Requests to port 60 are restricted.
Это прокси, что ли, не позволяет работать с портом?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху