PDA

View Full Version : [PHP] Caricare un file in memoria ($_FILES) si può fare??? HELP


Alello
30-05-2010, 20:37
Ciao a tutti,

sto cercando di modificare l'upload di una galleria foto .

Voglio fare l'upload delle foto contenute in una cartella che si trova già sul server.

Il problema è questo: la funzione della galleria permette l'upload da file del disco con il form quindi input type=file . tasto sfoglia e caricamento del file ..

In questo modo viene istanziato l'oggetto $_FILES che memorizza temporaneamente il file sul server. per poi metterlo nel posto in cui deve stare con un'altra funzione..

* $_FILES["file"]["name"] - the name of the uploaded file
* $_FILES["file"]["type"] - the type of the uploaded file
* $_FILES["file"]["size"] - the size in bytes of the uploaded file
* $_FILES["file"]["tmp_name"] - the name of the temporary copy of the file stored on the server
* $_FILES["file"]["error"] - the error code resulting from the file upload


dove "file" è il tag name dell'input di tipo file della form


Quello che vorrei fare è istanziare lo stesso oggetto ma da un file presente sull'host tramite url .. In questo modo potrei fare un ciclo di tutti i file della cartella sull'host . e uno per uno istanziarli in $_FILES e richiamare add_picture della galleria. In modo da non toccare nulla...


Ho cercato in tutti i modi su Google ma niente..

Il problema è questo campo:
$_FILES["file"]["tmp_name"]

gli altri riesco ad emularli.

tmp_name è la path del file temporaneo creato sul server che è una copia del file caricato.

è possibile risolvere questo problema?? che dite??


inoltre?

se faccio una fopen di un file questo non mi dovrebbe creare una copia in $_FILES. Da quello che ho visto no..

Sono certo che l'upload temporaneo in memoria si possa fare con php .. ho bisogno solo della funzione.. o il modo per farlo..


GRAZIEEEEEE

flx2000
31-05-2010, 11:25
Ciao a tutti,

sto cercando di modificare l'upload di una galleria foto .

Voglio fare l'upload delle foto contenute in una cartella che si trova già sul server.

Il problema è questo: la funzione della galleria permette l'upload da file del disco con il form quindi input type=file . tasto sfoglia e caricamento del file ..

In questo modo viene istanziato l'oggetto $_FILES che memorizza temporaneamente il file sul server. per poi metterlo nel posto in cui deve stare con un'altra funzione..

* $_FILES["file"]["name"] - the name of the uploaded file
* $_FILES["file"]["type"] - the type of the uploaded file
* $_FILES["file"]["size"] - the size in bytes of the uploaded file
* $_FILES["file"]["tmp_name"] - the name of the temporary copy of the file stored on the server
* $_FILES["file"]["error"] - the error code resulting from the file upload


dove "file" è il tag name dell'input di tipo file della form


Quello che vorrei fare è istanziare lo stesso oggetto ma da un file presente sull'host tramite url .. In questo modo potrei fare un ciclo di tutti i file della cartella sull'host . e uno per uno istanziarli in $_FILES e richiamare add_picture della galleria. In modo da non toccare nulla...


Ho cercato in tutti i modi su Google ma niente..

Il problema è questo campo:
$_FILES["file"]["tmp_name"]

gli altri riesco ad emularli.

tmp_name è la path del file temporaneo creato sul server che è una copia del file caricato.

è possibile risolvere questo problema?? che dite??


inoltre?

se faccio una fopen di un file questo non mi dovrebbe creare una copia in $_FILES. Da quello che ho visto no..

Sono certo che l'upload temporaneo in memoria si possa fare con php .. ho bisogno solo della funzione.. o il modo per farlo..


GRAZIEEEEEE

Non è possibile modificare il puntamento a un file trasferito perché il protocollo prevede un hash temporaneo univoco per ogni trasferimento.
La variabile $_FILES viene riempita dal preprocessore prima di eseguire il tuo script quindi i valori ivi presenti sono in sola lettura.
Le funzioni PHP come fopen non scrivono sulle variabili globali quindi $_FILES è estranea al comando.

Puoi realizzare uno script che esegue un reale upload di tipo type=file realizzando uno script PHP che preleva il file da inviare con fopen e lo uploada sul server di destinazione tramite il comando header.

Alello
31-05-2010, 12:21
ma questa variabile cos'è ????

$_FILES["file"]["tmp_name"] - the name of the temporary copy of the file stored on the server


stampandolo mi da una cosa del genere: /tmp/phpYIpIfw


ma phpYIpIfw è il nome di un file senza estensione?


perchè se al posto di

/tmp/phpYIpIfw

gli do /foto/foto.jpg non funziona???

flx2000
31-05-2010, 12:35
Quando uno script PHP riceve un file in upload, questo file viene caricato sul webserver in una cartella prestabilita (nel tuo caso /tmp) e gli viene assegnato un nome temporaneo (nel tuo caso phpYIpIfw).
La funzione di quella variabile è di farti sapere come e dove è stato salvato il file che hai inviato via upload.
Grazie ad essa puoi lavorare sul file che di solito si prende e si sposta nella directory finale rinominandolo col nome originale tramite la funzione move_uploaded_file().

Alello
31-05-2010, 12:38
Quando uno script PHP riceve un file in upload, questo file viene caricato sul webserver in una cartella prestabilita (nel tuo caso /tmp) e gli viene assegnato un nome temporaneo (nel tuo caso phpYIpIfw).
Vista la sua funzione non è ovviamente possibile cambiare il contenuto della variabile.
Grazie ad essa puoi lavorare sul file uploadato, che in genere si prende e si sposta nella directory finale rinominandolo col nome originale tramite la funzione move_uploaded_file().

si questo mi era chiaro ma il contenuto di tmp_name è una path ?

se alla funzione che si aspetta tmp_name gli passo la path del nome di un file già residente in host perchè non va ?

non dovrebbe funzionare???

flx2000
01-06-2010, 09:54
si questo mi era chiaro ma il contenuto di tmp_name è una path ?

se alla funzione che si aspetta tmp_name gli passo la path del nome di un file già residente in host perchè non va ?

non dovrebbe funzionare???

Se per "gli passo" intendi che glielo assegni allora è normale che non funzioni, perché come ti avevo detto è in sola lettura.
Comunque sì, è la path del file temporaneo che contiene il file trasferito con l'upload.