Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    upload - passaggio variabili

    salve a tutti,

    ho un problemino di passaggio variabili ad una pagina che fa l'upload di un file.

    normalmente vengono passate così:

    il form:
    codice:
    <form name="formBox" action="upload.php" enctype="multipart/form-data" method="post">
        <input id="up" type="file" name="upload">
        <input type="submit">
    </form>
    la pagina upload.php riceve:

    Codice PHP:
    $file $_FILES['upload']['name']; 
    però io, in quel form, non uso la forma classica ma assegno una funzione js ad ogni elemento del form e mentre per tutto il resto funziona non riesco a recuperare il valore dell'input "file" nella pagina php.

    la pagina web è strutturata in un div che contiene altri 2 div dove vengono caricate (tramite js) 2 pagine.php (form.php e upload.php):

    codice:
    <div id="container">
        <div id="divForm"></div>
        <div id="divUpload"></div>
    </div>
    il form (sta nella pagina form.php caricata nel div "divForm"):
    codice:
    echo'<form name="formBox">
        <input id="up" type="file" name="upload">
        [img]btn.png[/img]
    </form>';
    lo script js (anche questo sta nella pagina form.php) che carica la pagina upload.php sul div id="div_upload", passandole 2 parametri POST ("upload" e il parametro dell'input "file" del form che deve essere ricevuto nella variabile $_FILES[]);
    codice:
    echo'<script>
        function btnNew(){
            $("#divUpload").load("upload.php",{"act[]":["upl",document.formBox.up.name]});
        }
    </script>';
    solo che la pagina upload php:
    Codice PHP:
    $act $_POST['act'][0];
    $file $_FILES['act'][1]['name']; 
    mi da errore di "undefined index 'upload' " (che è ['act'][1]) mentre per 'upl' (che è ['act'][0]) non mi da nessun errore.

    sicuramente sbaglio nella forma di invio (da js) del parametro che viene ricevuto nella variabile $_FILES o nella forma di ricezione (in php) del parametro stesso.

    Ho anche cercato (usando la forma classica del form e senza usare js), attraverso un "consiglio" trovato in alcuni forums, di mettere un target="divUpload" nel tag FORM che faccia in modo di caricare la pagina nel div apposito ma non funziona e mi da l'unico effetto di aprire in una nuova scheda la pagina upload.php (cosa che non voglio fare).

    il problema è che non essendo ferrato in materia ma son solo uno che legge, interpreta e manipola i linguaggi senza conoscerli (mea culpa) non trovo soluzione nè in logica, nè facendo delle prove, nè in rete.

    se qualcuno/a riuscisse a capire il mio ragionamento alquanto contorto e conoscesse una soluzione gli/le sarei tanto grato e imparerei una cosetta in più

    grazie 1000 in anticipo.

    Luca.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Beh ho passato settimane per risolvere un problema del genere poi alla fine ho capito che usare la variabile file è un vero s***, i motivi sono seplici, devi stare attento alla quantità di file da inviare grandezza e timeout del server...

    non hai specificato il tipo di file da inviare al tuo server....

  3. #3
    ciao,

    grazie della risposta!!!

    i parametri del php.ini li posso settare a piacimento sulla macchina che ospita il server e il motore php e poi nella pagina.php posso tranquillamente fare un controllo su grandezza, estensione ecc. (come già faccio nella classe creata solo che non ho scritto tutto altrimenti qua sul topic veniva fuori un romanzo ancora più lungo di quello che ho scritto).

    se per "il tipo di file da inviare al server" intendi l'attributo "accept=image/*" o simili del tag INPUT file (quello che filtra il tipo di file da cercare nella finestra sfoglia), non funziona con la magior parte delle "application" e dei browser (infatti non capisco perchè sia ancora implementato in html o perchè i browser non vengano aggiornati in tal senso).

    purtroppo la variabile "$_files" in php mi serve per recuperare nome e caratteristiche del file che scelgo attraverso il campo "sfoglia"... sempre che in php si possa ovviare in qualche altro modo recuperando qualche altro parametro al suo posto.

    tutto questo per non ricaricare la pagina e, ancora peggio, non caricarla in un'altra scheda ma in un div apposito ed evitare lo sfarfallio tra la cancellazione del vecchio contenuto e il caricamento del nuovo (che per quanto possa essere breve... non mi piace).

    tu come hai risolto?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Diciamo che ho fatto questa operazione in due passaggi, nel primo passaggio carico tutto sul server remoto senza fare nessun controllo particolare, lascio fare tutto a jquery, nel secondo passaggio sposto le immagini organizzandole in cartelle e sottocartelle con id_album, id_immagine e id_img_thumb, poi salvo queste info su Mysql includendo anche relative modifiche e nomi...

    la guida la trovi a questo indirizzo http://blueimp.github.io/jQuery-File-Upload/ ma ti dico a priori che ho dovuto macchinare abbastanza per risolvere, in ogni caso adesso va che è una meraviglia, inoltre con questo plugin non ci sono problemi di timeout, modificare i file php.ini e il numero di immagini caricate contemporaneamente....

    Se hai problemi fammi sapere che ti dico come ho risolto....

  5. #5
    grazie adesso controllo.

    ma comunque la parte movimento files, la ho già implementata e funziona a dovere.

    l'unico mio problema è il fare tutto (cioè mettere la pagina di destinazione) su un div per evitare il caricamento di quella pagina su una nuova scheda o il ricaricamento sulla stessa pagina.

    in soldoni solo il div deve cambiare aspetto con le informazioni di successo o di errore lasciando il resto della pagina inalterato.

    guardo e ti faccio sapere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.