Javascript come vedere in anteprima le foto caricate nel input file prima di mandarle al server

Stato
Discussione chiusa ad ulteriori risposte.

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Scusa ma di grazia, il tuo server da che cosa è composto al momento?
Cosa c'è in quello script PHP?
Perché tu puoi mandare tutti i dati che vogliamo ma vanno anche gestiti al backend :)
 

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Allora, guardando per l'ennesima volta il tuo codice molto disordinato (non capisco perché non vuoi riscriverlo come si deve...), ho visto che:
  • Dovresti guardare come funziona FormData, come puoi vedere il costruttore non prende parametri, devi definire un oggetto e appendere dei dati:
    JavaScript:
    dati = new FormData(form); //NO
    Questo è quello che stai facendo tu, dovresti fare una cosa tipo:
    JavaScript:
    const formData = new FormData();
    formData.append('files', files);
  • FormData deve avere una proprietà che rappresenta i file, che a sua volta deve essere poi ripresa nello script PHP
    PHP:
    $_FILES['files']
    A grandi linee una cosa del genere.
Quando printi il body della request cosa ti tira fuori al momento?
 

coronello201297

Utente Gold
28 Agosto 2017
446
106
31
244
Allora, guardando per l'ennesima volta il tuo codice molto disordinato (non capisco perché non vuoi riscriverlo come si deve...), ho visto che:
  • Dovresti guardare come funziona FormData, come puoi vedere il costruttore non prende parametri, devi definire un oggetto e appendere dei dati:
    JavaScript:
    dati = new FormData(form); //NO
    Questo è quello che stai facendo tu, dovresti fare una cosa tipo:
    JavaScript:
    const formData = new FormData();
    formData.append('files', files);
  • FormData deve avere una proprietà che rappresenta i file, che a sua volta deve essere poi ripresa nello script PHP
    PHP:
    $_FILES['files']
    A grandi linee una cosa del genere.
Quando printi il body della request cosa ti tira fuori al momento?
scusa non ho capito che dovrei fare, scrivo solo quella riga files e file ebasta? non devo fare rifermento al name di ogni input file? f1 f2 etc?
 

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Quello che ti ho scritto è ciò che devi fare a grandi linee: devi prendere la mia risposta, adattarla al tuo progetto e provare a vedere cosa succede.
Parti con un file, se funziona prova ad integrare il resto.

Comunque non hai risposto alla mia domanda, quando fai il print del body della request in questo momento cosa ti tira fuori?
 

coronello201297

Utente Gold
28 Agosto 2017
446
106
31
244
Allora, guardando per l'ennesima volta il tuo codice molto disordinato (non capisco perché non vuoi riscriverlo come si deve...), ho visto che:
  • Dovresti guardare come funziona FormData, come puoi vedere il costruttore non prende parametri, devi definire un oggetto e appendere dei dati:
    JavaScript:
    dati = new FormData(form); //NO
    Questo è quello che stai facendo tu, dovresti fare una cosa tipo:
    JavaScript:
    const formData = new FormData();
    formData.append('files', files);
  • FormData deve avere una proprietà che rappresenta i file, che a sua volta deve essere poi ripresa nello script PHP
    PHP:
    $_FILES['files']
    A grandi linee una cosa del genere.
Quando printi il body della request cosa ti tira fuori al momento?
Scusa nn ho capito, il print lo devo fare su php o JavaScript?
 

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Quando indico "body" della request, hai ben chiaro ciò di cui sto parlando?
C'è un posto dove, tecnicamente, stai già printando il body della request. Qual'è il contenuto di questo print?
 

coronello201297

Utente Gold
28 Agosto 2017
446
106
31
244
Quando indico "body" della request, hai ben chiaro ciò di cui sto parlando?
C'è un posto dove, tecnicamente, stai già printando il body della request. Qual'è il contenuto di questo print?
Schermata da 2021-12-07 12-04-05.png

Messaggio unito automaticamente:

questo intendevi?
 

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Non hai ben chiaro il concetto di REQUEST, ti consiglio vivamente di studiartelo così da capire cosa stai facendo.
Comunque, vorrei sapere cosa contiene il body della request che arriva al tuo "server"!
 

coronello201297

Utente Gold
28 Agosto 2017
446
106
31
244
Non hai ben chiaro il concetto di REQUEST, ti consiglio vivamente di studiartelo così da capire cosa stai facendo.
Comunque, vorrei sapere cosa contiene il body della request che arriva al tuo "server"!
nn ho capito niente, non ho ancora inviato nulla, finora sono riuscito solo a riepilogare cio che dovrebbe andare al server
Messaggio unito automaticamente:

guarda l'ultimo codice jsfiddle che ho linkato qui nei commenti
 

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Il JSFiddle che hai postato è confusionario.
Quando submitti il FORM tu invii, tramite FETCH API, i dati specificati nel body allo script PHP.
Nello script PHP hai un print (ammesso che l'environment su cui stai girando il tutto è funzionante) e qualcosa ti dovrebbe arrivare, cosa ti printa?
 

coronello201297

Utente Gold
28 Agosto 2017
446
106
31
244
Il JSFiddle che hai postato è confusionario.
Quando submitti il FORM tu invii, tramite FETCH API, i dati specificati nel body allo script PHP.
Nello script PHP hai un print (ammesso che l'environment su cui stai girando il tutto è funzionante) e qualcosa ti dovrebbe arrivare, cosa ti printa?
Boh domani guardo
 

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Quando tu fai:

JavaScript:
fetch("output2.php", {
    method:'POST',
    body: dati
})

se il tuo environment è setuppato come si deve dovrebbe arrivare la richiesta :lol:

Come ti ho detto, probabilmente c'è un problema di fondo e non è neanche colpa tua: dovresti metterti lì e studiare come tirar su un backend che possa masticare i dati che gli mandi, devi perderci del tempo e studiare.
 

coronello201297

Utente Gold
28 Agosto 2017
446
106
31
244
Quando tu fai:

JavaScript:
fetch("output2.php", {
    method:'POST',
    body: dati
})

se il tuo environment è setuppato come si deve dovrebbe arrivare la richiesta :lol:

Come ti ho detto, probabilmente c'è un problema di fondo e non è neanche colpa tua: dovresti metterti lì e studiare come tirar su un backend che possa masticare i dati che gli mandi, devi perderci del tempo e studiare.
Quindi neanche tu sai come fare? ^_^'
 

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Beh, considerando che lo faccio per lavoro e che ho una certa seniority direi che dovrei esserne in grado, il contrario sarebbe un bel problemone :frog-think:

Scriverti il backend da 0 sarebbe letteralmente un lavoro e non ne avrei il tempo materiale, inoltre non impareresti niente - non sarebbe più utile se ti mettessi a studiare una tecnologia e la imparassi come si deve? Se guardi la quantità di risposte che ti ho fornito e la quantità di codice che ho scritto per te, possiamo dire che ti ho fornito più che un semplice aiuto teorico, che tendenzialmente hai ignorato considerando che l'ultima logica che hai postato è esattamente quella iniziale - questo denota come la tua voglia di studiare in merito a queste cose sia poca, o comunque demotivata da qualche fattore che io ignoro e questa cosa è un gran peccato, perché mi sembra che l'interesse tu lo stia dimostrando!

Nel momento in cui proverai a studiarti un modo per tirarti su un backend e posterai qualcosa di quantomeno pensato e che tendenzialmente possa funzionare sarò felice di aiutarti e chiarirti i dubbi, mentre scrivertelo da 0 invece sono costretto a declinare e non perché non voglio aiutarti ma per tuo unico interesse personale, perché un domani il codice scritto da me non ti servirà a niente mentre quello che avrai studiato per scriverlo ti rimarrà in mente.

Comunque, ci sono numerosi libri e altrettante risorse online e se hai bisogno posso provare a consigliarti qualcosa.
 

coronello201297

Utente Gold
28 Agosto 2017
446
106
31
244
Beh, considerando che lo faccio per lavoro e che ho una certa seniority direi che dovrei esserne in grado, il contrario sarebbe un bel problemone :frog-think:

Scriverti il backend da 0 sarebbe letteralmente un lavoro e non ne avrei il tempo materiale, inoltre non impareresti niente - non sarebbe più utile se ti mettessi a studiare una tecnologia e la imparassi come si deve? Se guardi la quantità di risposte che ti ho fornito e la quantità di codice che ho scritto per te, possiamo dire che ti ho fornito più che un semplice aiuto teorico, che tendenzialmente hai ignorato considerando che l'ultima logica che hai postato è esattamente quella iniziale - questo denota come la tua voglia di studiare in merito a queste cose sia poca, o comunque demotivata da qualche fattore che io ignoro e questa cosa è un gran peccato, perché mi sembra che l'interesse tu lo stia dimostrando!

Nel momento in cui proverai a studiarti un modo per tirarti su un backend e posterai qualcosa di quantomeno pensato e che tendenzialmente possa funzionare sarò felice di aiutarti e chiarirti i dubbi, mentre scrivertelo da 0 invece sono costretto a declinare e non perché non voglio aiutarti ma per tuo unico interesse personale, perché un domani il codice scritto da me non ti servirà a niente mentre quello che avrai studiato per scriverlo ti rimarrà in mente.

Comunque, ci sono numerosi libri e altrettante risorse online e se hai bisogno posso provare a consigliarti qualcosa.
Secondo te perche voglio mantenere il mio codice e non il tuo? Voglio imparare x questo lo faccio, .. ora che mi parli dil.backend io con php ho studiato , ma quello che mi serve ora nn so che cosa sia, sono perso lo potrai capire..
 

DidyMond

Utente Gold
24 Agosto 2015
859
3
261
223
Secondo te perche voglio mantenere il mio codice e non il tuo? Voglio imparare x questo lo faccio
Si, ma se uno scrive un codice che non funziona o che funziona per grazia del Signore....capisci bene che non stai imparando proprio nulla.
Vuoi imparare e tenere il tuo codice? Bene, cancella tutto e riscrivilo da zero.
Dopo confronta la tua soluzione con quella che ti è stata fornita da una persona più esperta di te e cerca di capire perchè lui ha fatto determinate scelte strutturali.

Ha molto più senso confrontarsi nel cercare di capire perchè Dany ha raggiunto una determinata soluzione piuttosto che continuare con qualcosa di oggettivamente sbagliato.
 
  • Grazie
Reazioni: Dany©

Dany©

Helper
8 Ottobre 2010
1,154
24
262
341
Quello che sto cercando di dire è esattamente quello che ha esposto @DidyMond, non avrei saputo esprimerlo in maniera migliore.
In questo momento ti senti perso perché quello che hai fatto è confusionario e tu stesso non sai bene dove metter mano.
Spesso resettare e ripartire è il modo migliore per avere un risultato!

Se hai studiato PHP e hai una discreta conoscenza di ciò che succede quando viene fatta una POST request ad uno script non dovresti avere grossi dubbi su come fare a mandare i dati del tuo form!
 

coronello201297

Utente Gold
28 Agosto 2017
446
106
31
244
Quello che sto cercando di dire è esattamente quello che ha esposto @DidyMond, non avrei saputo esprimerlo in maniera migliore.
In questo momento ti senti perso perché quello che hai fatto è confusionario e tu stesso non sai bene dove metter mano.
Spesso resettare e ripartire è il modo migliore per avere un risultato!

Se hai studiato PHP e hai una discreta conoscenza di ciò che succede quando viene fatta una POST request ad uno script non dovresti avere grossi dubbi su come fare a mandare i dati del tuo form!
Ho visto che il metodo fetch prende il sottometodo then e in questo metodo che nn so cosa metterci.. tra l altro se nn erro ce anche un altro sottometodo.. e cmq dopo il submit la pagina con il form nn si ricarica quindi..
 

JunkCoder

Moderatore
5 Giugno 2020
798
16
641
339
Ammiro la pazienza di @Dany© e il thread si sarebbe potuto fermare alla prima risposta, 8 pagine sono molte e si è passato dal problema iniziale del titolo a mille altri aspetti separati, perfino di sintassi e basi del linguaggio, a questo punto Dany avrebbe potuto fare un'intera guida su JavaScript che avrebbe raggiunto e interessato molti più utenti impiegando lo stesso tempo. Non dico che devi studiare un mattone di libro sull'argomento ma almeno fare delle prove, debuggare, comprendere le differenze tra il tuo codice e quello che ti viene suggerito, capire come e perché le cose funzionano così... è il modo migliore per migliorarsi e se seguirai questo metodo riuscirai a cavartela da solo, aiutando anche gli altri e per quando avrai dei dubbi le domande saranno più mirate e chiare.
 
  • Love
Reazioni: 0xbro e Dany©

JunkCoder

Moderatore
5 Giugno 2020
798
16
641
339
Se non fai console log del risultato della fetch o in then mi sembra normale che tu non lo veda in console. Visto che ignori qualunque risposta e continui a postare nuovi problemi chiudo. Spero che se apri un nuovo thread rileggerai prima i giusti consigli che un po' tutti ti hanno dato.
 
  • Mi piace
Reazioni: 0xbro e DidyMond
Stato
Discussione chiusa ad ulteriori risposte.