Autor Zpráva
S_a_n_t_e
Profil *
Dobrý den všem :-)

chci se zeptat jak na upload z jiné stránky na svoji doménu? Zkoušel jsem to nějak takhle, ale moc nefubguje :-(

$od = 'http://nejakadomena.cz/obrazek.jpg';
$do = 'obrazky/test.jpg';
$upload = move_uploaded_file($od, $do);
if(!$upload) echo "Ty jsi tomu zase dal !.";


Kde dělám chybu? Děkuju
radas
Profil *
řešeni by šlo přes curl
S_a_n_t_e
Profil *
Myslíte nějak takhle?
curl -F filestuff=@/tmp/mypicture.jpg https://username:passwd@wiki.yak.net/69.upload[/pre]
    
S_a_n_t_e
Profil *
Jsem našel lepší příklad, ale moc tomu nerozumím. Potřebuji jen klasickty uploadovat fotku z jine domeny na moji. Jsem si nemyslel, že to bude tak optížný a ještě přez hesla :-(
curl --upload-file "{adresar}" ftp://server.cz/ --user user:pass
Medvídek
Profil
S_a_n_t_e:
Asi by to šlo i přes file_get_contnet();
$im = imagecreatefromstring(file_get_contents(rawurldecode($_POST["url"])));
$width=imagesx($im);
$height=imagesy($im);
........


a nebo jen file_get_contents a hned file_put_contents
S_a_n_t_e
Profil *
Ale jestli tomu dobře rozumím, tak misto adresářeto bude lepší :-)
Tohle curl --upload-file "{adresar}" ftp://server.cz/ --user user:pass vyhazuje jen chyby
__construct
Profil
radas, Medvídek: S kanónom na komára? Funkcia copy() by nestačila?
unlucky
Profil
if(!$img = file_get_contents($_POST['img_url'])) { 
  die('chzba'); 
} 

if(!file_exists(IMAGE_DIR."/".$_POST['rename'])){ 
  if(!file_put_contents(IMAGE_DIR.'/'.$_POST['rename'], $img)) { 
    die('chzba'); 
  }else{ echo "uploaded ".$_POST['rename']. "<br />";}
}else{
echo "existuje";
}


zde mám skript, který přejmenuje rovnou img
ShiraNai7
Profil
Taky to lze pomocí file_get_contents a file_put_contents a lze snadno poznat kde nastala chyba, pokud nastala.

if(($data = @file_get_contents('http://nejakadomena.cz/obrazek.jpg')) !== false) {
  if(@file_put_contents('./obrazky/test.jpg', $data) !== false) echo 'OK';
  else echo 'Nepodarilo se zapsat do ciloveho souboru!';
} else echo 'Nepodarilo se nacist zdrojovy soubor';
radas
Profil *
__construct:
už se mi stalo že copy mi to nechtělo brat :( prostě se obrázky se nekopirovaly a přes curl mi to fungovalo
S_a_n_t_e
Profil *
Medvídek:
co to je? Bude to znít blbě, ale co dělá $im? width a height asi měří šířku a výšku obrázku, ale to první nechápu vůbec.
Medvídek
Profil
__construct:
copy() je na většině hostingů zakázaných. Alespoň kde sem byl já.

S_a_n_t_e:
To sem tam měl proto, že sem s tim obrázkem dál pracoval (zmenšoval a proto sem potřeboval vědět, jak je velikej), ale stačí použít to od ShiraNai7.
radas
Profil *
Medvídek:
jsem rád že nejsem jediny kdo se s tim setkal...
Medvídek
Profil
radas:
Já momentálně používám curl, s tím jsem problém ještě neměl.
radas
Profil *
Medvídek:
taky to používam ikdyž je to "kanon"
S_a_n_t_e
Profil *
Kód od ShiraNai7 vážně maká dobře. Moc Vám děkuji za rady a vlastně i za funkční kody.
__construct
Profil
radas:
už se mi stalo že copy mi to nechtělo brat
Medvídek:
copy() je na většině hostingů zakázaných. Alespoň kde sem byl já.

To som si neuvedomil — to bude tým vlastným serverom :-)
S_a_n_t_e
Profil *
Medvídek:
To tvoje řešení mě zajímá. Ty vlastně do $im stáhneš obrázek k dalšímu pracování a pak to uploaduješ pomocí move_upload_file?
Medvídek
Profil
S_a_n_t_e:
Nene, pak klasicky podle rozměrů zmenšim a podle typu souboru uložim.
if($extension=="jpg"  OR  $extension=="jpeg"){
 imageinterlace($nahled, 1);
 imagecopyresized($nahled, $im, 0, 0, 0, 0, $nahled_s, $nahled_v, $width, $height);
 imagejpeg($nahled, $slozka);
}
atd..


Ale teď spíše používám toto:

<?php
function download_img($from, $dir = '', $max_width = 0, $max_height = 0, $tmp_dir = ''){
	$accept_type = array(
		'image/gif' 	=> 'gif',
		'image/png' 	=> 'png',
		'image/jpeg' 	=> 'jpg',
		'image/pjpeg' 	=> 'jpg',
		'image/jpg' 	=> 'jpg'
	);

	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, rawurldecode($from));
	curl_setopt($curl, CURLOPT_FAILONERROR, 1);
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_TIMEOUT, 10);
	curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
	$img_data = curl_exec($curl);
	curl_close($curl);

	$return = false;
	if ($img_data != ''){
		if (mb_substr($tmp_dir, mb_strlen($tmp_dir) - 1) != '/' && $tmp_dir != '') $tmp_dir .= '/';
		$tmp_file = md5($tmp_dir.$from).'.tmp';
		$f = fopen($tmp_file, 'wb');
		fwrite($f, $img_data);
		fclose($f);
		unset($img_data);

		$img_info = getimagesize($tmp_file);
		if (array_key_exists($img_info['mime'], $accept_type)){
			$ext = $accept_type[$img_info['mime']];
			if (mb_substr($dir, mb_strlen($dir) - 1) != '/' && $dir != '') $dir .= '/';
			$to = $dir.md5($from).'.'.$ext;

			if ($max_width > 0 || $max_height > 0){
				list($width, $height) = $img_info;

				if ($width > $max_width || $height > $max_height){
					switch ($ext){
						case 'gif':
							$imgsrc = imagecreatefromgif($tmp_file);
							break;
						case 'png':
							$imgsrc = imagecreatefrompng($tmp_file);
							break;
						case 'jpg':
							$imgsrc = imagecreatefromjpeg($tmp_file);
							break;
 					}

					$imgratio = $width / $height;
					if ($imgratio > 1){
						$new_width = $max_width;
						$new_height = $max_width / $imgratio;
					} else {
						$new_height = $max_width;
						$new_width = $max_width * $imgratio;
					}

					$newimg = imagecreatetruecolor($new_width, $new_height);
					if ($ext == 'gif' || $ext == 'png'){
						$bgcolor = imagecolorallocate($newimg, 255, 255, 255);
						imagefill($newimg, 0, 0, $bgcolor);
						imagecolortransparent($newimg, $bgcolor);
					}
					imagecopyresampled($newimg, $imgsrc, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

					if (file_exists($to)) unlink($to);
					switch ($ext){
						case 'gif':
							$imgsrc = imagegif($newimg, $to);
							break;
						case 'png':
							$imgsrc = imagepng($newimg, $to);
							break;
						case 'jpg':
							$imgsrc = imagejpeg($newimg, $to, 90);
							break;
 					}

					$return = array(
						'file'		=> $to,
						'width'		=> $width,
						'height'	=> $height,
						'type'		=> $img_info['mime']
					);
				}
			} else {
				copy($tmp_file, $to);
			}
		}

		unlink($tmp_file);
	}

	return $return;
}



/*
Použití:
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', 'images', 300, 300, 'temp');
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', 'images', 300, 300);
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', 'images');
$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', '', 0, 0, 'temp');
$newimg = download_img('http://localhost/et.jpg');
*/

$newimg = download_img('http://www.autorevue.cz/files/564783651.jpg', '', 300, 300);
print_r($newimg);
S_a_n_t_e
Profil *
Tak tedy stačí zápis udělat takhle a mělo by to makat?

$im = imagecreatefromstring(file_get_contents(rawurldecode($_POST[url])));
$width=imagesx($im);
$height=imagesy($im);
$nahled_s = '500';
$nahled_v = '500';
$upload_path = "./obrazky/";
$large_image_name = "test2.jpg";
if($extension=="jpg"  OR  $extension=="jpeg"){
 imageinterlace($nahled, 1);
 imagecopyresized($nahled, $im, 0, 0, 0, 0, $nahled_s, $nahled_v, $width, $height);
 imagejpeg($nahled, $upload_path.$large_image_name);
}
Medvídek
Profil
S_a_n_t_e:
No musíš zjistit nejprve poměr stran, aby ta miniatura byla zmenšená ve stejnym poměru.

$imgratio = $width / $height;
                    if ($imgratio > 1){
                        $new_width = $max_width;
                        $new_height = $max_width / $imgratio;
                    } else {
                        $new_height = $max_width;
                        $new_width = $max_width * $imgratio;
                    }


Pak zjistit, co je to obrázek (JPG, GIF, PNG), nejlépe přes MIME typ, nebo
$extension = strtolower(end(explode('.', $_POST["url"])));


Pak si uděláš obrázek už v tom poměru zmenšenej.

$nahled = imagecreatetruecolor($new_width, $new_height);


A pak uložíš podle typu

if($extension=="jpg"  OR  $extension=="jpeg"){
 imageinterlace($nahled, 1);
 imagecopyresized($nahled, $im, 0, 0, 0, 0, $nahled_s, $nahled_v, $width, $height);
 imagejpeg($nahled, $slozka);
}
if($extension=="png"){
 imageinterlace($nahled, 1);
 imagecopyresized($nahled, $im, 0, 0, 0, 0, $nahled_s, $nahled_v, $width, $height);
 imagepng($nahled, $slozka);
}
if($extension=="gif"){
 imageinterlace($nahled, 1);
 imagecopyresized($nahled, $im, 0, 0, 0, 0, $nahled_s, $nahled_v, $width, $height);
 imagegif($nahled, $slozka);
}


Lepší je použít imagecopyresampled, než imagecopyresized
S_a_n_t_e
Profil *
Medvídek:
fakt dobrej návod. Moc ti děkuju hned jak se ktomu dostanu, tak se stím poperu a snad vyhraju :-)

Moc děkuju
Medvídek
a samozřejmě i všem ostatním za dobré rady a i hotové řešení. Tohle jsem vážně při zakládání vlákna nečekal.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0