WebSite X5Help Center

 
Corrado D.
Corrado D.
User

Spostare file con php  it

Auteur : Corrado D.
Visité 2168, Followers 1, Partagé 0  

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

Posté le
8 RéPONSES - 1 UTILES - 1 CORRECT
 stesil  
 stesil  
User

Ciao,

prova ad inserire il percorso nella variabile copia:

$copia = '../../cam_1_new.jpg';

Lire plus
Posté le de  stesil  
Corrado D.
Corrado D.
User
Auteur

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

Lire plus
Posté le de Corrado D.
 stesil  
 stesil  
User

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?

Lire plus
Posté le de  stesil  
Skeggia 12
Skeggia 12
Moderator

<?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...

Lire plus
Posté le de Skeggia 12
Skeggia 12
Skeggia 12
Moderator

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...

Lire plus
Posté le de Skeggia 12
 stesil  
 stesil  
User

Ciao Skeggia smile

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.

Lire plus
Posté le de  stesil  
Skeggia 12
Skeggia 12
Moderator

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...

Lire plus
Posté le de Skeggia 12
Corrado D.
Corrado D.
User
Auteur

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

Lire plus
Posté le de Corrado D.