Spostare file con php
Autor: Corrado D.Buongiorno , avrei bisogno di uno script php per spostare un file da una dir all'altra del server.
Con quest:
<?php
// copy($originale,$copia);
$originale = 'cam_1.jpg';
$copia = 'cam_1_new.jpg';
if(copy($originale, $copia)) {
echo "Copia di <b>$copia</b> riuscita con successo!";
}else{
echo "Copia di <b>$copia</b> non riuscita!";
}
?>
riesco a copiare il file ma solo all'interno della stessa cartella (dove metterei lo script)
Dovrei spotare il file da una sottocartella "public_html/foto/snaps/nome.jpg" alla radice "public_html/nome.jpg" e non conosco la sintassi. (specificando, se serve, eventuali permessi).
vorrei usare uno scrip, perchè lo inserirei in un oggetto codice per farlo eseguire alla visualizzazione della pagina.
Non penso che valga la pena eseguirlo in un cron anche perche non saprei come fare.... e ho provato nell'oggetto codice funziona.
Grazie Corrado
Ciao,
prova ad inserire il percorso nella variabile copia:
$copia = '../../cam_1_new.jpg';
Autor
Gia provato in vari formati , ma non funziona. termina senza errori ma il file non lo copia.
Forse con i comandi copia URL o move ecc. ma non conosco sintassi
Io l'ho provato prima di risponderti e funziona.
Ho riprodotto questa situazione: file img e file con lo script nella cartella snaps, contenuta a sua volta nella cartella foto che è contenuta nella cartella public_html. Richiamando lo script, il file img viene copiato nella cartella public_html.
Ho capito forse male la struttura delle tue cartelle?
<?php
// copy($originale,$copia);
$originale = 'bg.jpg';
$copia = 'temp/bg_new.jpg';
if(copy($originale, $copia)) {
echo "Copia di <b>$copia</b> riuscita con successo!";
}else{
echo "Copia di <b>$copia</b> non riuscita!";
}
?>
così, come suggerito da stesil, funziona...
se poi vuoi fare una cosa in più... senza cambiare tutte le volte il nome del file da copiare, modificando il file php, puoi trasformarlo così...
<?php
// copy($originale,$copia);
$originale = $_GET['ann'];
$copia = 'temp/' . $_GET['ann'];
if(copy($originale, $copia)) {
echo "Copia di <b>$copia</b> riuscita con successo!";
}else{
echo "Copia di <b>$copia</b> non riuscita!";
}
?>
scrivendo nella barra degli indirizzi (ammesso che hai scritto questo codice in un file che si chiama sposta.php)...
http://www.nometuosito/sposta.php?ann=nomefiledacopiare.ext
...preso da vecchi suggerimenti di MAeSI...
Ciao Skeggia
però usando un parametro in GET bisogna validarlo, soprattutto in una situazione come questa, dove vengono copiati dei file, altrimenti si rischia che qualche "burlone" si diverta a saturare lo spazio sul server di file inutili copiati... e non so quanto la validazione sia semplice da fare.
ciao stesil...
già... tra l'altro analizzando bene, questo codice non modifica il nome del file... ma lo copia pari pari...
e la validazione non so proprio come farla... insomma... cancelliamo la risposta dalle possibilità pratiche...
un saluto...
Autor
Stesil il tuo consiglio è stato utile. Avevo scritto male il percorso.
Grazie a tutti per i consigli. Seguendo quello di Scheggia ho anche inserito alcune righe che cancellano il file di arrivo prima di ricopiarlo e anche il file sorgente (tanto viene ricaricato dalla veb ogni 15 min) cosi si puo far girare il php allinfinito che avremo sempre un file solo.
Grazie di nuovo a tutti Sakuti Corrado