Autor | Zpráva | ||
---|---|---|---|
S_a_n_t_e Profil * |
#1 · Zasláno: 18. 5. 2011, 12:09:57
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 * |
#2 · Zasláno: 18. 5. 2011, 12:19:24
řešeni by šlo přes curl
|
||
S_a_n_t_e Profil * |
#3 · Zasláno: 18. 5. 2011, 12:23:06
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 * |
#4 · Zasláno: 18. 5. 2011, 12:27:41
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 |
#5 · Zasláno: 18. 5. 2011, 12:30:33 · Upravil/a: Medvídek
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 * |
#6 · Zasláno: 18. 5. 2011, 12:36:44
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 |
#7 · Zasláno: 18. 5. 2011, 12:36:58 · Upravil/a: __construct
radas, Medvídek: S kanónom na komára? Funkcia
copy() by nestačila?
|
||
unlucky Profil |
#8 · Zasláno: 18. 5. 2011, 12:38:02
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 |
#9 · Zasláno: 18. 5. 2011, 12:39:04
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 * |
#10 · Zasláno: 18. 5. 2011, 12:40:17
__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 * |
#11 · Zasláno: 18. 5. 2011, 12:40:54
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 |
#12 · Zasláno: 18. 5. 2011, 12:41:33 · Upravil/a: Medvídek
__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 * |
#13 · Zasláno: 18. 5. 2011, 12:42:26
Medvídek:
jsem rád že nejsem jediny kdo se s tim setkal... |
||
Medvídek Profil |
#14 · Zasláno: 18. 5. 2011, 12:44:19
radas:
Já momentálně používám curl, s tím jsem problém ještě neměl. |
||
radas Profil * |
#15 · Zasláno: 18. 5. 2011, 12:47:48
Medvídek:
taky to používam ikdyž je to "kanon" |
||
S_a_n_t_e Profil * |
#16 · Zasláno: 18. 5. 2011, 12:53:34
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 |
#17 · Zasláno: 18. 5. 2011, 12:59:04
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 * |
#18 · Zasláno: 18. 5. 2011, 13:03:40
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 |
#19 · Zasláno: 18. 5. 2011, 13:23:44
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 * |
#20 · Zasláno: 18. 5. 2011, 13:39:05
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 |
#21 · Zasláno: 18. 5. 2011, 14:05:15
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 * |
#22 · Zasláno: 18. 5. 2011, 14:11:37
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 |
||
Časová prodleva: 13 let
|
0