Newsgroup: it.comp.www.php
Titolo: inserire file in cartelle separate

Ciao a tutti non sono molto bravo con php e chiedo aiuto a voi. Devo
inserire 100 file pdf da una cartella che ho sul pc locale a un server
dove ci sono 100 cartelle denominate con il nome dei file che ho in
locale. Ogni file della cartella in locale ha lo stesso nome della
cartella sul server. Vorrei sapere (magari attraverso un upload
multiplo) come posso fare per indirizzare i file ale loro cartelle con
lo stesso nome: per intenderci il file1.pdf ->> va a cartella
file1.pdf, il file2.pdf ->> va a cartella file2.pdf e cosi' via fino a
100 attraverso uno script o un procedimento batch in php. Altrimenti
devo mettermi li' e fare l'upload a mano con l'FTP per ogni file.
Oppure inserire i file in locale e creare la cartella con lo stesso
nome sul server se non esiste e inserirci il file; o se esiste
uploadare il file. Spero di essermi spiegato bene. Datemi una mano.
Grazie Francesco



due soluzioni:
1 - due righe di bash in locale per creare le directory e metterci i file 
dentro. Dopo uppi tutto con un normale client FTP. (tempo stimato per 
l'operazione : tre minuti + tempo di upload dei file)
2 - (un po' più compèlicata) script python che si connette al server in 
FTP legge un file da locale, crea la dir corrispondente sul server e ci 
trasferisce il file.
in ogni caso, io non lo farei in php, e soprattutto non tramite una web 
app !


Grazie ma non ho capito la procedura sia della prima che della seconda
ipotesi, scusami ma sono alle prime armi....

 ipotesi, scusami ma sono alle prime armi....
tu hai una dir con dentro:
file1.pdf
file2.pdf
file3.pdf
fai uno script bash che :
legge tutti i nome dei file nella dir,
per ogni nome file letto (*):
crea una dir (da un'altra parte , diciamo in una dir di appoggio) con lo 
stesso nome del file
mkdir dir_appoggio/fileX.pdf/
ci copia dentro il file
cp fileX.pdf  mkdir dir_appoggio/fileX.pdf/
una volta fatto questo, apri un client ftp, e copi sul server tutte le 
dir appena create
(*) il metodo per ciclare sui file dipende da dove stanno i file, se 
hanno spazi o caratteri strani nel nome, se ci sono altri tipi di file 
nella stessa dir, se ci sono subdir, altro. si può andare da
 for file in *
a dover modificare l' IFS e fare un find in pipe a while read.
il secondo metodo credo tu no sia in grado di farlo adesso.


Grazie lo stesso Red ma continuo a non capire , per la shell bash devo
usare linux oppure si puo' fare dal dos di windows, dove posso
prendere un esempio?

 dove posso prendere un esempio?
http://tldp.org/LDP/Bash-Beginners-Guide/html/
ps: siamo andati OT

 [...] oppure si puo' fare dal dos di windows, dove posso prendere un esempio?
OK, continuo l'OT, più che altro perché t'hanno scritto che non si può 
fare in WindDOwS :-)
Si può fare nel "Prompt dei comandi" di Windows, copia il seguente 
script in un file chiamato, ad esempio, trasferisci.cmd, modifica le 
prime 5 righe (set ...) secondo le tue esigenze e lancialo...
----8<----------8<---------8<-----------
set local_path=C:\cartellaconfiles
set server_ftp=
ftp.tuoserver.com
set remote_path=/cartelleftp/quellochetipare
set user_ftp=tuoaccount
set pwd_ftp=tuapassword
set file_ftp=trasferisci.ftp
pushd %local_path%
REM creo la prima parte del file FTP
REM per il trasferimento dei files
echo open %server_ftp%>%file_ftp%
echo %user_ftp%>>%file_ftp%
echo %pwd_ftp%>>%file_ftp%
echo cd %remote_path%>>%file_ftp%
echo lcd %local_path%>>%file_ftp%
echo binary>>%file_ftp%
echo prompt>>%file_ftp%
REM ora ciclo nella tua cartella e
REM richiamo la label :exec
for %%a in (*.*) do call :exec %%a
REM termino la creazione del file FTP
echo quit>>%file_ftp%
REM e lo eseguo richiamando il client FTP
ftp -s:%file_ftp%
popd
REM fine del programma
goto :EOF
:exec
REM aggiungo al file FTP i comandi
REM di creazione/cambio cartella e
REM di trasferimento dei files
echo mkdir %1>>%file_ftp%
echo cd %1>>%file_ftp%
echo send %1>>%file_ftp%
echo cd ..>>%file_ftp%
goto :EOF
----8<----------8<---------8<-----------
JM
certe volte i Linuxari sono peggio dei Windowsari...