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

    Verifica estensione file

    Salve a tutti.

    Ho una pagina php con un form contenente 3 box per inserire altrettanti file e, alla fine, inviarli tutti assieme. Devo controllare che i 3 file siano file immagine (per il momento ho specificato jpg, poi una volta che lo script funziona allargo il campo delle estensioni).

    Per fare questo ho trovato il seguente script, che xò controlla solo un singolo campo (dato che controlla l'Id)

    codice:
    <script>
    function get_estensione(path) {
        posizione_punto=path.lastIndexOf(".");
    	lunghezza_stringa=path.length;
    	estensione=path.substring(posizione_punto+1,lunghezza_stringa);
    	return estensione;
    }
    
    function controlla_estensione(path){
    	if(get_estensione(path)!="jpg"){
    		alert("Il file deve avere estensione jpg");
    	}
    }
    </script>
    
    <input type="file" id="file" onchange="controlla_estensione(document.getElementById('file').value);">

    Io invece ho scritto il seguente codice, che però non funziona (non entra neanche nel ciclo for, dato che a schermo non visualizzo il comando di stampa che ho piazzato per debuggare)

    codice:
    <script>
    function get_estensione(path) {
        posizione_punto=path.lastIndexOf(".");
    	lunghezza_stringa=path.length;
    	estensione=path.substring(posizione_punto+1,lunghezza_stringa);
    	return estensione;
    	
    }
    
    function controlla_estensione(path){
    	if(get_estensione(path)!="jpg"){
    		alert("Il file deve avere estensione jpg");
    		return 0;
    		//document.getElementById('file').value=null;
    	}
    	return 1;
    }
    
    function cancella_immagine()
    {
    	var array;
    	var i;
    	array=document.getElementsById("file");
    	for(i=0;i<3;i=i+1)
    	{
    		document.write(array[i]);
    		if(array[i].value!=null)
    			if(controlla_estensione(array[i])==0)
    				array[i].value=null;
    	}
    }
    </script>
    
    
    <input name='logo_home' type='file' style="font-family:tahoma;font-size:13px;width:200px" id='file' onchange="cancella_immagine();">
    Ammetto che non è una bella soluzione, in quanto ogni volta che inserisco un'immagine fa il controllo di tutte e 3, ma per il momento potrebbe andar bene (se avete suggerimenti + efficienti siete i benvenuti, ovviamente!!!)
    Come dicevo, il codice per quanto rudimentale potrebbe andare, ma non funziona proprio... =\

  2. #2
    codice:
    <input type="file" id="file1" onchange="controlla_estensione(this.value);">
    <input type="file" id="file2" onchange="controlla_estensione(this.value);">
    <input type="file" id="file3" onchange="controlla_estensione(this.value);">
    Poi: non dare id uguali a parole chiave! (tipo id="file")

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Intanto ho trovato un errore... document.getElementsbyId('file') in realtà dovrebbe essere document.getElementsbyName('file') (che crea un array con tutti gli elementi che hanno come name file), però non posso farlo xkè i 3 input hanno nomi diversi, l'unica cosa su cui posso agire è l'Id...però non mi pare che esista una funzione simile(che crea un array), ma solo document.getElementById('file') che prende il primo elemento che ha come Id file...

  4. #4
    Originariamente inviato da homezappa
    codice:
    <input type="file" id="file1" onchange="controlla_estensione(this.value);">
    <input type="file" id="file2" onchange="controlla_estensione(this.value);">
    <input type="file" id="file3" onchange="controlla_estensione(this.value);">
    Poi: non dare id uguali a parole chiave! (tipo id="file")

    HTH
    Zappa
    Quello che dici tu è corretto, ma io ho bisogno di azzerare il campo value nel caso in cui sia un file diverso da quelli specificati...e per farlo avevo aggiunto un document.getElementById('file').value=null; dopo l'alert...solo che così lui non lo trova, dato che cerca 'file' anzichè 'file1' (o file2 o file3)...

    ora stavo cercando di risolvere la faccenda in una maniera ancor meno raffinata, giusto per implementare la cosa...

    codice:
    <script>
    function get_estensione(path) {
    	alert("Dentro get_estensione");
    	posizione_punto=path.lastIndexOf(".");
            alert("Dopo posizione_punto");
    	lunghezza_stringa=path.length;
    	estensione=path.substring(posizione_punto+1,lunghezza_stringa);
    	return estensione;
    	
    }
    
    function controlla_estensione(path){
    	alert("Dentro controlla_estensione");
    	if(get_estensione(path)!="jpg"){
    		alert("Il file deve avere estensione jpg");
    		return 0;
    	}
    	return 1;
    }
    
    function correggi()
    {
    	alert("Dentro correggi");
    	if(controlla_estensione(document.getElementById('file1'))==0)
    		document.getElementById(file1)=null;
    	if(controlla_estensione(document.getElementById('file2'))==0)
    		document.getElementById(file2)=null;
    	if(controlla_estensione(document.getElementById('file3'))==0)
    		document.getElementById(file3)=null;
    }
    </script>
    
    
    
    <input name='logo_home' type='file' style="font-family:tahoma;font-size:13px;width:200px" id='file1' onchange="correggi();">
    
    <input name='foto_2' type='file' style="font-family:tahoma;font-size:13px;width:200px" id='file2' onchange='correggi()'>
    
    <input name='foto' type='file' style="font-family:tahoma;font-size:13px;width:200px" id='file3' onchange='correggi()'>

    In sequenza mi stampa

    Dentro correggi
    Dentro controlla_estensione
    Dentro get_estensione

    ma non riesce a stampare "dopo posizione punto"...dov'è l'inghippo?


    editk, l'inghippo era che il parametro da passare a get_estensione doveva essere path.value, non path

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.