Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194

    upload file da form con formtarget="_blank". Il file è vuoto.

    Ciao a tutti. Mi sono accorto che inviando un file da form html a pagina php tramite un bottone formtarget="_blank" il file arriva vuoto, o almeno così mi sembra.
    Queste sono le righe php:
    Codice PHP:


      
    if (preg_match('/jpeg/i'$_FILES['userFile']['type'])){
      
    $estensione 'jpg';}
      else if (
    preg_match('/png/i'$_FILES['userFile']['type'])){
      
    $estensione 'png';}
      else if (
    preg_match('/gif/i'$_FILES['userFile']['type'])){
      
    $estensione 'gif';}
      else die (
    '<h1>Errore!!!</h1><br/><h3>Estensione ('.$type.') non supportata</h3>');
        

      list(
    $width$height) = getimagesize ($_FILES['userFile']['tmp_name']);
      
      echo 
    'Tipo di file: '.$_FILES['userFile']['type'].'<br>';
      echo 
    'Larghezza file: '.$width.'<br>';
      echo 
    'Altezza file: '.$height.'<br>';
      
      
    $handle fopen ($_FILES['userFile']['tmp_name'], 'r+') or die ('<h1>Errore</h1><br/><h3>impossibile aprire il file immagine prodotto</h3>');
      
    $image fread ($handlefilesize($_FILES['userFile']['tmp_name'])) or die('<h1>Errore</h1><br/><h3>impossibile leggere il file immagine prodotto</h3>');
      
    fclose ($handle); 
    Il seguente codice mi riporta a schermo:

    Tipo di file: image/jpeg
    Larghezza file:
    Altezza file:

    Warning: fread(): Length parameter must be greater than 0 in /home/....


    Se lo stesso file nello stesso form lo invio con un bottone di tipo submit senza formtarget="_blank" il tutto funziona. Il resto dei dati del form, semplice testo, sono ricevuti correttamente in entrambi i casi.

    NB: lavorando offline con Mamp non ho questo problema.

    Gradirei essere illuminato e magari avere una soluzione.
    Grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    Posti il codice del form?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    codice HTML:
    <form method="post" enctype="multipart/form-data" target="_self">
        <input class="header2" name="titolo" type="text" placeholder="Un titolo per il prodotto" required/>
        <div class="prodotti">
         <div class="immagine">
          <img src="images/mascherina.png" alt="Inserisci l'immagine" />
          <input class="inputfile" id="file" type="file" name="userFile" required />
          <label for="file">
           <figure>
            <svg class="uploadicon" version="1.1" baseProfile="tiny" id="Livello_1"
            xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="297 -104 1205.1 1000"
            xml:space="preserve">
            <path fill="#C30000" d="M297.2,494.9c-1.5-29.9,1.7-58.6,9.5-86.1c7.8-27.5,19.4-53.4,34.6-77.6c15.3-24.2,34.5-45.8,57.6-64.7
            s48.8-33.8,77.1-44.9c51.4-19.5,103.3-23.7,155.7-12.7C656.2,155.2,693.3,112,743,79.3s105.1-49,165.9-49
            c41.3,0,80.8,8.1,118.3,24.2c37.6,16.1,69.9,37.7,97.1,64.9c27.2,27.2,48.8,59.5,64.9,97.1s24.2,77,24.2,118.3
            c0,6.2-0.7,15.1-2,26.8c1,0,2.2-0.3,3.7-1c1.5-0.7,2.5-1.1,3.2-1.5c53.4-20.8,106.3-19.4,158.8,4.1s89.2,62.1,110,115.4
            c13,37.1,16.9,73.1,11.7,108.1c-5.2,35-19.5,67.2-42.9,96.6c-23.4,29.4-52.9,51-88.3,64.7c-23.4,8.5-47.5,13-72.2,13.7H997.3V593.9
            h67.8c12.4,0,20.6-3.6,24.6-10.7s2.8-15.8-3.7-25.9L915.3,282.1c-4.6-6.5-9.9-9.8-16.1-9.8c-2.9,0-5.8,0.8-8.5,2.4
            c-2.8,1.6-4.8,3.3-6.1,4.9l-2,2.4L711.8,557.3c-6.5,10.1-7.6,18.7-3.2,25.9s12.8,10.7,25.1,10.7h66.9v167.9h-224v-0.5
            c-56.9,0-109.4-16.2-157.4-48.6c-48-32.4-82.4-75.9-103.2-130.5C305,553.9,298.7,524.8,297.2,494.9L297.2,494.9z"/>
            </svg>
            <span class="uploadspan">Carica</span>
           </figure>
          </label>
         </div>
         <div class="descrizione">
          <input class="header3" name="prodotto" type="text" placeholder="Il nome del prodotto" required />
          <textarea class="paragrafo" name="descrizione" rows="14" placeholder="Descrizione del prodotto" required ></textarea>
         </div>
           <table class="tablecategoria">
            <tr>
             <td><b>CATEGORIA:</b></td>
             <td>
             <input style="text-transform:lowercase" name="categoria" type="text" required/>
             </td>
            </tr>
            <tr>
             <td><b>POSIZIONE:</b></td>
             <td>
             <input name="ordine_lista" type="text"/>
             </td>
            </tr>
            <tr>
             <td><b>PREZZO:</b></td>
             <td>
             <input name="prezzo" type="text"/><span style="font-size:24px"></span>
             </td>
            </tr>
            <tr>
             <td><b>MANUALE:</b></td>
             <td>
             <input name="manuale" type="file"/>
             </td>
            </tr>
            <tr>
             <td><b>TECNICA:</b></td>
             <td>
             <input name="tecnica" type="file"/>
             </td>
            </tr>
            <tr>
             <td><b>RICAMBI:</b></td>
             <td>
             <input name="ricambi" type="file"/>
             </td>
            </tr>
            <tr>
             <td><b>NUOVO:</b></td>
             <td><input name="nuovo" type="radio" value="si"/>No<input name="nuovo" type="radio" value="no" checked/></td>
             
            </tr>
           </table>
         <div class="clear"></div>
         <div class="dati">
          <h4>Dati tecnici</h4>
          <table class="tabledati" style="min-width:100%">
           <tr>
            <td class="voce"><input name="voce[]" type="text" placeholder="Voce" required /></td>
            <td class="valore"><input name="valore[]" type="text" placeholder="Valore" required /></td>
           </tr>
           <tr>
            <td class="voce"><input name="voce[]" type="text" placeholder="Voce" /></td>
            <td class="valore"><input name="valore[]" type="text" placeholder="Valore" /></td>
           </tr>
           <tr>
            <td class="voce"><input name="voce[]" type="text" placeholder="Voce" /></td>
            <td class="valore"><input name="valore[]" type="text" placeholder="Valore" /></td>
           </tr>
           <tr>
            <td class="voce"><input name="voce[]" type="text" placeholder="Voce" /></td>
            <td class="valore"><input name="valore[]" type="text" placeholder="Valore" /></td>
           </tr>
           <tr>
            <td class="voce"><input name="voce[]" type="text" placeholder="Voce" /></td>
            <td class="valore"><input name="valore[]" type="text" placeholder="Valore" /></td>
           </tr>
           <tr>
            <td class="voce"><input name="voce[]" type="text" placeholder="Voce" /></td>
            <td class="valore"><input name="valore[]" type="text" placeholder="Valore" /></td>
           </tr>
          </table>
         </div>
         <div class="caratteristiche">
          <h4>Caratteristiche</h4>
          <ol> 
           <li class="lista">
            <input type="text" name="caratteristica[]" placeholder="caratteristica" required />
           </li>
           <li class="lista">
            <input type="text" name="caratteristica[]" placeholder="caratteristica" />
           </li>
           <li class="lista">
            <input type="text" name="caratteristica[]" placeholder="caratteristica" />
           </li>
           <li class="lista">
            <input type="text" name="caratteristica[]" placeholder="caratteristica" />
           </li>
           <li class="lista">
            <input type="text" name="caratteristica[]" placeholder="caratteristica" />
           </li>
           <li class="lista">
            <input type="text" name="caratteristica[]" placeholder="caratteristica" />
           </li>
          </ol>
         </div>
         <div class="applicazioni">
         <h4>Principali aplicazioni</h4>
          <ol>
           <li class="lista">
            <input type="text" name="applicazione[]" placeholder="applicazione" required />
           </li>
           <li class="lista">
            <input type="text" name="applicazione[]" placeholder="applicazione" />
           </li>
           <li class="lista">
            <input type="text" name="applicazione[]" placeholder="applicazione" />
           </li>
           <li class="lista">
            <input type="text" name="applicazione[]" placeholder="applicazione" />
           </li>
           <li class="lista">
            <input type="text" name="applicazione[]" placeholder="applicazione" />
           </li>
           <li class="lista">
            <input type="text" name="applicazione[]" placeholder="applicazione" />
           </li>
           
          </ol>
         </div>
         <div class="clear"></div>
         <div class="features">
          <h4>Icone features</h4>
          <div class="featuresicon">
           <input class="inputfile" id="file_1" type="file" name="icona[]" />
             <label style="position:relative; float:left; width:12em; height:40px; border:1px solid #cacaca" for="file_1">
              <figure>
               <span class="uploadspan" style="font-size:1em; line-height:1.5em">Carica</span>
              </figure>
             </label>
           <div class="clear"></div>
           <input class="nomeicona" type="text" name="nomeicona[]" />
          </div>
          <div class="featuresicon">
           <input class="inputfile" id="file_2" type="file" name="icona[]" />
             <label style="position:relative; float:left; width:12em; height:40px; border:1px solid #cacaca" for="file_2">
              <figure>
               <span class="uploadspan" style="font-size:1em; line-height:1.5em">Carica</span>
              </figure>
             </label>
           <div class="clear"></div>
           <input class="nomeicona" type="text" name="nomeicona[]" />
          </div>
          <div class="featuresicon">
           <input class="inputfile" id="file_3" type="file" name="icona[]" />
             <label style="position:relative; float:left; width:12em; height:40px; border:1px solid #cacaca" for="file_3">
              <figure>
               <span class="uploadspan" style="font-size:1em; line-height:1.5em">Carica</span>
              </figure>
             </label>
           <div class="clear"></div>
           <input class="nomeicona" type="text" name="nomeicona[]" />
          </div>
          <div class="featuresicon">
           <input class="inputfile" id="file_4" type="file" name="icona[]" />
             <label style="position:relative; float:left; width:12em; height:40px; border:1px solid #cacaca" for="file_4">
              <figure>
               <span class="uploadspan" style="font-size:1em; line-height:1.5em">Carica</span>
              </figure>
             </label>
           <div class="clear"></div>
           <input class="nomeicona" type="text" name="nomeicona[]" />
          </div>
          <div class="featuresicon">
           <input class="inputfile" id="file_5" type="file" name="icona[]" />
             <label style="position:relative; float:left; width:12em; height:40px; border:1px solid #cacaca" for="file_5">
              <figure>
               <span class="uploadspan" style="font-size:1em; line-height:1.5em">Carica</span>
              </figure>
             </label>
           <div class="clear"></div>
           <input class="nomeicona" type="text" name="nomeicona[]" />
          </div>
          <div class="featuresicon">
           <input class="inputfile" id="file_6" type="file" name="icona[]" />
             <label style="position:relative; float:left; width:12em; height:40px; border:1px solid #cacaca" for="file_6">
              <figure>
               <span class="uploadspan" style="font-size:1em; line-height:1.5em">Carica</span>
              </figure>
             </label>
           <div class="clear"></div>
           <input class="nomeicona" type="text" name="nomeicona[]" />
          </div>
         </div>
          
        </div>
        <input type="hidden" name="key" value="<?php echo $key; ?>" />
        <button class="anteprima" formaction="db/anteprima_upload.php" formtarget="_blank">Anteprima</button>
        <button class="salva" formaction="db/prodotti_upload.php">Salva</button>
       </form>

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    Ciao,
    io proverei così:
    1. assegna un id al tag form
    codice:
    <form id="formid" method="post" enctype="multipart/form-data" target="_self">
    2. cambia il tag button:
    codice:
    <input type="button" class="anteprima" onclick="javascript:anteprima();">Anteprima</button>
    3.Aggiungi il codice js in fondo la pagina:
    codice:
    <script Language="javascript">
    function anteprima() {
         var form=document.getElementById("formid");
         form.setAttribute("action","db/anteprima_upload.php");
         form.setAttribute("target","_blank");
         form.submit();
    }
    </script>
    fammi sapere....

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Sì, buona idea. Ci provo subito. Grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Stessa identica cosa: offline funziona sul server no. Ho testato questa soluzione solo sul server ufficiale dove gira il sito ma avevo lo stesso problema su più server con hosting differenti.
    Direi che il problema è sulla ricezione del file e non sull'invio. Uso la versione di php 5.4 perché non ho aggiornato il sito a mysqli. Non so, potrebbe fare la differenza?

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    No, non credo quello faccia differenza....
    Se provassi ad usare Imagick ? Sei su un server Linux o Windows?

    tipo:
    Codice PHP:
    $uploadedfile=$_FILES["userFile"]["tmp_name"];
    $finalimg = new Imagick($uploadedfile);
    $wWidth $finalimg->getImageWidth();
    $wHeight $finalimg->getImageHeight();
    $finalimg->destroy(); 
    almeno per vedere se l'immagine c'è...
    Ultima modifica di autsel; 30-06-2016 a 12:33

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    194
    Sono su server Linux. Proverò con Imagick, ho visto che c'è un'installazione da fare che non mi è molto chiara per cui rimando alle prossime giornate. Farò comunque sapere come è andata.
    Grazie mille.
    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    residenza
    Brescia
    Messaggi
    81
    Oppure.... magari la cosa non ti piace ma si potrebbe aggirare il problema con
    qualche altra modifica..... potresti fare l'upload in un iframe nascosto e aprire
    la nuova pagina con l'anteprima alla fine del caricamento....

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 © 2024 vBulletin Solutions, Inc. All rights reserved.