| 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: 15 let
|
|||
0