- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema upload immagini su Internet Explorer
-
Problema upload immagini su Internet Explorer
Salve ragazzi, ho un bel problema da proporvi
Ho fatto un semplicissimo form HTML per l'upload di 5 immagini che rimanda alla pagina in PHP per la gestione dell'upload tramite il metodo POST.
Il problema sta nel fatto che tutto funziona perfettamente su Chrome ma su Internet Explorer mi visualizza l'errore che il formato dell'immagine non è permesso!
Vi posto il codice HTML:
<html> <body> <form name="upload" method="post" action="upload_foto.php" enctype="multipart/form-data"> <input type="file" name="uploadfile1"><br/> <input type="file" name="uploadfile2"><br/> <input type="file" name="uploadfile3"><br/> <input type="file" name="uploadfile4"><br/> <input type="file" name="uploadfile5"><br/> <br/> <input type="submit" name="go" value="Carica"> </form> </body> </html>
...e questa è la pagina upload_foto.php:
<?php for ($i=1; $i<=5; $i++) { //comincia il ciclo FOR per l'upload di tutti i file. $uploadfile="uploadfile$i"; // controllo che non ci siano stati errori nell'upload (codice = 0) if ($_FILES[$uploadfile]['error'] == 0){ // upload ok // controllo che il file sia nel giusto formato if ($_FILES[$uploadfile]['type'] != "image/gif" && $_FILES[$uploadfile]['type'] != "image/jpeg" && $_FILES[$uploadfile]['type'] != "image/jpg" && $_FILES[$uploadfile]['type'] != "image/png") die("Sono permessi solo i formati gif, jpg, jpeg e png"); // ricavo l'estensione dell'immagine $estensione_file = strstr($_FILES[$uploadfile]['name'], '.'); $nomefile="prova$i$estensione_file"; // copio il file dalla cartella temporanea a quella di destinazione con un nuovo nome che coincide con l'ID dell'utente più l'estensione dell'immagine copy($_FILES[$uploadfile]['tmp_name'], "upload/".$nomefile) or die("Impossibile caricare il file"); // upload terminato, scrivo il nome del file nel record dell'utente echo "Immagine 1, caricata con successo! <br>"; } else{ // controllo il tipo di errore if ($_FILES[$uploadfile]['error'] == 2){ // errore, file troppo grande (> 1MB) die("Errore, file troppo grande: il massimo consentito è 1MB"); } else{ // errore generico die("Impossibile caricare il file. Sembra che il formato e la grandezza dell'imagine siano giuste. Forse abbiamo un problema al server, riprova più tardi."); } } } //finisce il ciclo FOR ?>
Il problema è un pò strano perchè il PHP viene gestito lato server e non dal browser come per l'HTML...
Qualche idea?
Qualche consiglio?Grazie a tutti
PS: questo problema lo avevo già postato ieri ma il codice era più complesso e non ho avuto tante risposte.
Quello che trovate quì è abbastanza semplice quindi spero di semplificare le cose e avere più risposte...
-
Prova a fare echo $_FILES[$uploadfile]['type']; E guarda quale differenta c'è tra chrome etc e internet explorer.
Io per verifficare l'estensione dell'immagine uso qusto codice
[PHP]
$filename = basename($_FILES['file']['name']);
$file = strrpos($filename, '.');
if($file === false)
{
//file senza estensione
}
else
{
$ext = substr($filename, $file + 1);
if($ext == 'png') //continua script
else //fermati
}
[/PHP]
-
@boghy91 said:
Prova a fare echo $_FILES[$uploadfile]['type']; E guarda quale differenta c'è tra chrome etc e internet explorer.
Si, alla fine ieri mi sono sviluppato lo stesso algoritmo e adesso funziona tutto perfettamente!
Una domanda... ma la pagina PHP viene caricata subito dopo il click sul submit o prima vengono caricati i file e poi si apre la pagina PHP?
Grazie
-
@Protone86 said:
Si, alla fine ieri mi sono sviluppato lo stesso algoritmo e adesso funziona tutto perfettamente!
Una domanda... ma la pagina PHP viene caricata subito dopo il click sul submit o prima vengono caricati i file e poi si apre la pagina PHP?
Grazie
Prima vengono caricati i file e poi si apre la pagina