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

    upload di file con iframe

    Ciao a tutti, non ero sicura di dove mettere questa discussione, l'upload di solito interessa il php ma il mio problema in realtà è circoscritto all'utilizzo del tag iframe, quindi ho scelto di metterla qua, al limite ditemi se non va bene e la sposto . Dunque, avrei bisogno di capire un comportamento "strano" appunto di questo tag: ho una pagina con una form, che utilizzo per l'upload di file, e ho messo subito dopo questa form un tag iframe di questo tipo:
    codice:
    <iframe style='visibility:hidden' height='50px' width='100px' name='risultati_upload' scrolling='NO' frameborder='0' id='iframe_upload'></iframe>
    Inserendo nella form come valore dell'attributo target il nome dell'iframe. Quando si clicca il pulsante di submit, l'iframe viene reso visibile, si effettuano i controlli e se tutto va bene si inviano i dati del file, e l'esito del caricamento appare nell'iframe. Il problema è che ogni volta che aggiorno la pagina firefox mi dice "Per visualizzare questa pagina devo rimandare informazioni già inviate" ed è come se si verifichi il submit, cioè nell'iframe appare il messaggio, di errore, dovuto al fatto che il campo input=file è vuoto, cosa ovvia dal momento che la pagina è stata ricaricata. Perchè mi fa così?? Specifico che sto usando l'iframe per non ricaricare ogni volta la pagina, guardando un pò in internet ho visto che è un pò il metodo "classico"...ma cosa sto toppando :P?? Grazie

  2. #2
    Il codice che hai postato non basta: serve anche quello del form e magari quello della pagina PHP/ASP che gestisce i dati.
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


  3. #3
    oki, dunque il corpo della pagina che contiene la form è fatto così:
    codice:
    <body> 
    <form id="upload" name="upload" action="uploader.php" target="risultati_upload" method="post" enctype="multipart/form-data" > 
    Seleziona il file da caricare: <input type="file" name="user_file">
    </br> 
    Seleziona la categoria: <select name="tipo" > <option></option> <option value="0">Classifica</option> <option value="1">Bilancio</option> <option value="2">Articolo</option> </select>
    </br> 
    Seleziona la società: <select name="societa"> <option></option> <?php $query="select id,rag_sociale from societa"; $query = mysql_query($query); while($row = mysql_fetch_array($query)){ echo "<option value='$row[id]'>".$row['rag_sociale']."</option>"; } ?> </select>
    </br> 
    Seleziona l'anno: <input type="text" name="anno"></input>
    </br>
     <input type="button" value="invia" onclick="control_form_upload();"></input> 
    <input type="reset" value="cancella"></input> </form> 
    <iframe style='visibility:hidden' height='50px' width='100px' name='risultati_upload' scrolling='NO' frameborder='0' id='iframe_upload'></iframe> </body>
    L'eventuale submit è fatto dalla funzione control_form_upload(), che prima controlla la validità dei campi ed è fatta così:
    codice:
    function control_upload_form(){ 
    //rendo visibile l'iframe che conterrà l'esito del caricamento
     $("#iframe_upload").html("x"); 
    $("#iframe_upload").css({"visibility":"visible"});
     //dichiaro alcune variabili utili
     var data=new Date(); 
    var anno=data.getFullYear();
     var flag=0;
     // la scelta del file è obbligatoria 
    if($("#upload :input[name='user_file']").val()=="") { alert("File non selezionato"); flag=1; } 
    
    //controlli sul campo anno: dev'essere un numero,positivo,di quattro cifre, e non superare l'anno corrente
     else if(isNaN($("#upload :input[name='anno']").val())){
     alert("Attenzione: il campo anno dev'essere un valore numerico"); flag=1; } 
    else if($("#upload :input[name='anno']").val()<=0) { 
    alert("Attenzione: il campo anno dev'essere un numero positivo"); flag=1; }
     else if($("#upload :input[name='anno']").val().length!=4){ 
    alert("Il campo anno dev'essere composto da quattro cifre"); flag=1; } 
    else if($("#upload :input[name='anno']").val()>anno){ 
    alert("Attenzione:non si può inserire un anno superiore al corrente"); flag=1; }
     //superati i controlli dà l'ok all'invio
     if(flag==0){ //$("#upload").submit(); } }
    Per quanto riguarda la pagina che viene chiamata è una pagina in php:
    codice:
    //controllo se il file è un pdf 
    if($_FILES["user_file"]["type"]!="application/pdf") 
    echo "Attenzione: è possibile caricare solo file pdf";
     else{ 
    $uploaddir='uploads/' ; //cartella in cui si caricano i file 
    
    $uploadfile=$uploaddir.basename($_FILES['user_file']['name']); //nella variabile c'è il nome originario del file dell'utente 
    if(move_uploaded_file($_FILES['user_file']['tmp_name'],$uploadfile)){
     echo "File caricato correttamente"; 
    echo "<input type='button' value='ok' onclick='pulisci_iframe();'>"; } 
    else{ echo "Problema durante l'upload"; } }
    spero non sia troppo incasinato :P grazie

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.