Autor Zpráva
wkkIt2
Profil
Zdravím,
mám stránky přes wordpress, na server ftp se mi ukládají fotky z webkamery, já s nimi potřebuju pracovat (přesunout, mazat, ...), spojení funguje (na moji funkci se vypíše "Pripojeni probehlo uspesne"), ale dál mě to ignoruje, přesouvání nefunguje. Dokázal by mi někdo prosím pomoct? Rozhodně nejsem programátor. Nevím ani, jaký přesně příkaz ke kopírování použít; jak ale vidíte, zkouším různé možnosti. Nastavení práv přes PHP také nejde; přesouvání ale nefunguje ani když nastavím práva souboru i nadřazeným adresářům přímo na ftp serveru. Díky

[insert_php]

$cesta_k_souboru= "http://www.zkouska.cz/a/xxx.jpg]www.zkouska.cz/a/xxx.jpg";
$cesta_k_souboru_nova = "http://www.zkouska.cz/a]www.zkouska.cz/a/b/xxx.jpg";

if((fopen($cesta_k_souboru,"r+"))!=NULL)    echo " The file exists";
else echo "The file does not exist";

// set up basic connection
$conn_id = ftp_connect("zkouska.cz");

// login with username and password
if($login_result = ftp_login($conn_id,"login","heslo")) echo " Pripojeni probehlo uspesne";
else echo " Pripojeni neprobehlo.";

if(copy($conn_id, $cesta_k_souboru, $cesta_k_souboru_nova)) echo " PRESUNUTO1!!!";
else echo " presun se nezdaril1";

if(move_uploaded_file($conn_id, $cesta_k_souboru, $cesta_k_souboru_nova)) echo " PRESUNUTO2!!!";
else echo " presun se nezdaril2";

if(ssh2_sftp_rename($conn_id, $cesta_k_souboru, $cesta_k_souboru_nova)) echo " PRESUNUTO3!!!";/else echo " presun se nezdaril3";

if(ftp_put($conn_id, $cesta_k_souboru, $cesta_k_souboru_nova, FTP_ASCII))  echo " PRESUNUTO4!!!";
else echo " presun se nezdaril4";

if(ftp_get($conn_id, $cesta_k_souboru_nova, $cesta_k_souboru, FTP_ASCII))  echo " PRESUNUTO5!!!";
else echo " presun se nezdaril5";

if(ftp_chmod($conn_id, 0777, $cesta_k_souboru)) echo " Chmod (img) probehl uspesne.";
else echo " Chmod (img) skoncil chybou.";

// close the connection
if(ftp_close($conn_id)) echo " Spojeni s FTP skonceno";
else echo " Spojení neukonceno???";
xROAL
Profil
Predpokladám, že súbor "www.zkouska.cz/a/xxx.jpg" na FTP neexistuje. Keď už, tak skôr "./a/xxx.jpg".

Keď si pripojený na FTP, nepracuješ s URL adresami, ale so súbormi na disku. Tam "http://www..." určite nepatrí
wkkIt2
Profil
xROAL:
ok, díky za info

začátek jsem přepsal na následující; stále ale nefunguje
$cesta_k_souboru = "./webkamera/xxx.jpg";
$cesta_k_souboru_nova = "./webkamera/go/xxx.jpg";
Davex
Profil
wkkIt2:
Nevím ani, jaký přesně příkaz ke kopírování použít; jak ale vidíte, zkouším různé možnosti.
Najít správnou funkci je v tomto případě velice snadné a určitě se to nedělá tak, že se náhodně slepí kód a doufá se, že to nějak zázračně začne samo fungovat.

Zkus si prostudovat Manipulace se soubory a adresáři.
wkkIt2
Profil
Davex:
Děkuju, i tento materiál jsem si před napsáním do této diskuze přečetl, ale bohužel jsem to ani po dlouhé době nezvládl naprogramovat. Doufal jsem v pomoc zkušenějších, něco co začátečník může při práci s PHP opomenout...
Davex
Profil
V učebnici na kterou jsem odkázal je zmíněna funkce

rename() – Přejmenuje/přesune soubor/adresář. I když jen přejmenováváte, cílový název musí být uveden s celou cestou, jinak to funkce chápe jako přesun do pracovního adresáře. Pozor na situace, kdy na cílovém umístění již soubor existuje, v závislosti na systému může být přepsán, nebo může funkce selhat.

Když si její název rozklikneš, tak se k ní otevře dokumentace, kde je popsán způsob použití.

V tvém případě tedy v podstatě stačí použít jen.

rename($cesta_k_souboru, $cesta_k_souboru_nova);
TomášK
Profil
Davex

Čtu-li dobře, chce přesouvat na vzdáleném FTP serveru, tedy potřebuje ftp_rename(), viz php.net/manual/en/function.ftp-rename.php
Davex
Profil
TomášK:
Já to pochopil tak, že chce přesouvat soubory ve stejném prostoru, kde mu běží Wordpress s vloženým PHP skriptem. Jinak by totiž nedávalo smysl přesouvat soubory na jiném FTP přes Wordpress.
wkkIt2
Profil
Děkuju za rady...ano, přesouvám ve stejném prostoru, kde běží Wordpress s PHP skriptem

S rename a správně napsanou cestou se soubor přesunul :) Rename jsem předtím také zkusil, ale měl jsem špatně ty cesty...

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: