Newsgroup: it.comp.www.php
Titolo: caricare tutti i files da una cartella...

Ragazzi..
pur sapendo che php lavora dal lato server... qualcuno mi puo' dare
qualche consiglio o esempio per caricare sul server apache tutti i
files contenuti in una cartella del mio pc ? Lo script (php) che ho
funziona bene ... ma un file alla volta... e manuale... Come fare?
Ivan

 ha scritto nel messaggio
news:l5nn4v8p7posbigme...@4ax.com...

    Spero proprio che non esista nulla del genere ... sai quante cosette si
potrebbero rubare se fosse possibile una cosa del genere ?
    Immagina che io abbia la possibilità di farlo. Cosa mi vieta di andare a
prendermi tutti i documenti che hai sul tuo PC ? E se poi mi vado a pescare
qualche altra informazione riservata ?
    Con la paura di avere smentite lascio la parola agli esperti del
settore, però sono convinto che PHP (e tutti i merletti che ci girano
attorno) siano strumenti mirati anche verso la sicurezza. Queste sono falle
da microsfot =)



Forse mi sono spiegato male...
vorrei caricare(upload) dei files sul mio server apache .
Non il rovescio... 
ciao
Ivan

 Ivan
    Appunto, vuoi prendere dei file da un client e caricarteli su un server
... OK ?
    se č cosě le mie considerazioni di prima sono valide ... occhio perchč
potresti far pensare a qualcosa di losco =)
considera che se non hai una risposta concreta entro un paio di ore č segno
tangibile che quanto dico č vero.
Ciao da Rocco


Primo metodo:
Potresti mettere all'interno del form html una serie di <input> per i 
files che si chiamano tutti cosě: "file[]".
<?
for ($i = 0; $i < $n_files_da_spedire; $i++)
	echo "<p><input name=\"file[]\" type=\"file\"></p>\n";
?>
In questo modo crei un'array di files che vengono spediti alla pagina 
php successiva che puň prenderli uno per uno e metterli dove vuoi te:
<?
$path = "/dove/vuoi/mettere/i/files/";
$i = 0;
while (is_uploaded_file($_FILES['file']['tmp_name'][$i])){
	$temp_name = $_FILES['file']['tmp_name'][$i];
	$name = $_FILES['file']['name'][$i];
	move_uploaded_file($temp_name, $path.$name);
	$i++;
}
?>
Secondo metodo:
Puoi zippare la directory, spedire il file zip e poi farlo decomprimere 
ad una pagina php. Puoi farlo direttamente con execute(); oppure con le 
librerie del php.
Ciao.
--
Gianni

 wrote:

E' il problema che io stesso posi tre mesi fa, senza ottenere risposta.
Quello che posso dire al riguardo:
- Il W3C dice che si puo' fare, cioe' si possono indicare IN UN UNICO
CAMPO "<input type=file" uno, due o piu' file, e suggerisce anche una
soluzione di interfaccia e fa un esempio. I file multipli vengono inviati
come MIME multipart/mixed (v. specifiche HTML 4.1).
- L'RFC 1867 dice che si puo' fare, ma il supporto per questa
funzionalita' e' opzionale.
- Opera 6 lo fa: permette di selezionare due o piu' file e li invia come
MIME multipart/mixed.
- Netscape 4.7, Mozilla 1.2, IE (?) non lo fanno: si puo' selezionare
un solo file alla volta.
- In tutti i casi, PHP non sembra in grado di riconoscere il malloppo
ricevuto da Opera in formato MIME multipart/mixed (lo ignora).
- Esistono soluzioni client/server per superare il problema, ma fanno
uso di Activex (e quindi richiedono obbligatoriamente Windows sul lato
client), ed inoltre sono a pagamento.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 ... OK ?
l'upload dei file è assolutamente consentito, ovviamente solo sotto 
specifica azione dell'utente.
In modo automatico non è invece possibile (o non dovrebbe) che il 
browser di sua iniziativa mandi files in automatico.
almeno a me sembra che sia così
ciao
Alesi_27

 client), ed inoltre sono a pagamento.
    Ammettendo che io compro l'Acrivex
    Ammettendo che ho un server Windows
    (anche se non capisco a cosa possa servire prendere tutta una cartella,
al massimo me la faccio passare zippata e poi la scompatto sul server
facendoci quello che voglio, come ha giustamente puntualizzato Gianni)
    Se durante l'upload io ti chiedo di installare un componente per
prendermi tutta la cartella che mi serve dicendoti che è sicuro, tu che fai,
lo installi ? =)
        Non voglio essere polemico, ma mi fa inca##are la possibilità degli
activex. Per carità, parecchi li usano come sicurezza aggiuntiva, sono una
mano santa in certi casi, ma sono pericolosamente invasivi e possono
lasciare delle porte aperte (volontarie e non) e con questo freddo sai che
spifferi =P
Ciao, Rocco

 facendoci quello che voglio, come ha giustamente puntualizzato Gianni)
Serve perche' devo fare una applicazione nella quale l'utente deve poter
caricare decine di file in una botta unica (es.: 40 fotografie).
Requisiti: massima semplicita', drag&drop, escludersi zippaggio,
escludersi installazione applicazioni specifiche lato client.


JS lato client... PHP lato server... basta solo un pò di fantasia ;)

 Ciao,
perchč non provi a risolvere con una applet firmata allora ?
le applet firmate garantiscono l'accesso al filesystem dell'utente e 
possono aprire connessioni con host diversi da quello di provenienza.
Quindi potresti fare una applet che legga tutti i files dell'utente e li 
uploadi su un FTP, oppure puoi scrivere un corrispondente server (in 
java o in un qualsiasi linguaggio ti faccia piů comodo), sempre che tu 
abbia accesso alla macchina host per poterci installare un server, che 
riceva le cartelle inviate dall'utente.
ciao
Alesi_27


Grazie a tutti per le risposte...
Lo scopo che mi prefiggevo era (ed e' ancora) di caricare circa un
migliaio di file dbf che trasformavo in insert sql . L'upload del file
che ho da dbf lo trasforma in txt con tanti insert into...
Farlo a mano mi sembra sinceramente una palla (potrei anche appendere
i file dbf in un'unico file dbf ma sicuramente ci sono problemi di
timeout e di max file post ( o l'altra direttiva in php.ini che non mi
ricordo)).
Ringrazio chi mi ha risposto con esempi... ora mi metto a provare.
Ivan
PS: grazie a Gianni per gli esempi.



Il ciclo for funziona ma rimane il problema del caricamento manuale
all'interno dei input name. Sai se esiste qualche cosa in javascript o
simile che mi puo' caricare i nomi dei files in un array ?
Ivan