caricamento file

ispanic

Utente Attivo
28 Ago 2014
119
0
0
Ciao ragazzi, per un caricamento file, come posso far sì di bloccare tutti i file che non siano immagini?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ti posto un esempio funzionante, nella funzione "GestisciFileToUpload" trovi quello che stai cercando,
nota solo che sono commentate le uscite per errore, essendo un esempio
ci sono anche le visualizzazioni di tutti i valori tornati dalla funzione di upload, estrai solo quello che ti serve
che mi sembra si capisca bene
ciao
Marino
PHP:
<?php

# http://localhost/test_site/php/test/_FileUploader.php

if (!empty($_POST['Submitted']))
{
  // estrae e stampa variabili e valori da $_POST
  extract($_POST, EXTR_OVERWRITE);

  print '<table width="800" border="0" cellspacing="5" cellpadding="5">';
  while(list($chiave, $valore)=each($_POST)){
    print "<tr><td>".$chiave." : </td><td>".${$chiave}."</td></tr>";
  }
  if (!GestisciFileToUpload()) exit;
  print "</table>";

  print "<br /><br /><a href='".$_SERVER['PHP_SELF']."'>TRY AGAIN</a>";
}
else
{
?>
<!DOCTYPE html>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
  <table width="500" border="0" cellspacing="5" cellpadding="5">
    <caption>&nbsp;</caption>
    <tr>
      <td colspan="2"><b>FILE UPLOADER</b></td>
    </tr>
    <tr>
      <td><label for="FileToUpload">FileToUpload :</label></td>
      <td><input type="file" name="FileToUpload" id="FileToUpload" /></td>
    </tr>
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2"><input name="submit" type="submit" id="submit" value="Invia"></td>
    </tr>
  </table>
  <input type="hidden" name="Submitted" value="1" />
</form>
</html>
<?PHP
}

function GestisciFileToUpload() {
  global $FileToUpload, $errormsg;

  $FileToUpload = "";

  if ($_FILES["FileToUpload"]["error"] == 4)
    return true;
  else {
    if ($_FILES["FileToUpload"]["error"] > 0) {
      print "<font color=red>Upload Return Code: ".$_FILES["FileToUpload"]["error"]."</font><br />";
      return false;
  } }

  $FileToUpload_name = $_FILES["FileToUpload"]["name"];
  $FileToUpload_type = $_FILES["FileToUpload"]["type"];
  $FileToUpload_size = $_FILES["FileToUpload"]["size"] / 1024;
  $FileToUpload_temp = $_FILES["FileToUpload"]["tmp_name"];
  $FileToUpload_path = dirname($_FILES["FileToUpload"]["tmp_name"]);
  $FileToUpload      = $FileToUpload_path."/".$FileToUpload_name;


  $allowedExts = array("gif", "jpeg", "jpg", "png");

  $temp = explode(".", $_FILES["FileToUpload"]["name"]);
  $extension = strtolower(end($temp));
  if (!in_array($extension, $allowedExts)) {
    print "<font color=red>file extension not allowed</font><br />";
//    return false;
  }


  $allowedTypes = array("image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/x-png", "image/png");

  if (!in_array(strtolower($_FILES["FileToUpload"]["type"]), $allowedTypes)) {
    print "<font color=red>file type not allowed</font><br />";
//    return false;
  }


  $maxallowedSize = 2000000;

  if ($_FILES["FileToUpload"]["size"] > $maxallowedSize) {
    print "<font color=red>file size exceeded</font><br />";
//    return false;
  }


  print "<tr><td>Upload : </td><td>".$FileToUpload_name."</td></tr>";
  print "<tr><td>Type : </td><td>".$FileToUpload_type."</td></tr>";
  print "<tr><td>Size (kB) : </td><td>".$FileToUpload_size."</td></tr>";
  print "<tr><td>Stored in : </td><td>".$FileToUpload_temp."</td></tr>";
  print "<tr><td>folder : </td><td>".$FileToUpload_path."</td></tr>";
  print "<tr><td>new file : </td><td>".$FileToUpload."</td></tr>";


  if (file_exists($FileToUpload)) {
    print "<font color=red>".$FileToUpload." a previous copy exists on the server<br />";
    print "it will be replaced by the newone</font><br />";
    unlink($FileToUpload);
  }

// move_uploaded_file($FileToUpload_temp, $UploadPath.$FileToUpload_name); <<-- non gestito

  rename ($FileToUpload_temp, $FileToUpload); 
  if (file_exists($FileToUpload)) {
    print "<font color=green>".$FileToUpload." file successfully uploaded</font><br />";
  }
  return true;
}
?>
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
Grazie mille Marino, mi spiegheresti cosa c'è di sbagliato nel mio script ( non l'ho ciclato con foreach per il semplice motivo che gli utente potrebbero caricare anche solo un'immagine, mentre deve essere obbligatorio caricarne due ).
PHP:
$direzione = "caricamenti/";
$tipi = array ("image/png", "image/jpg", "image/gif", "image/jpeg");

if(!in-array($_FILES['caricare_file']['type'],$tipi))
{

print ('errore');
exit;

}


if(is_uploaded_file($_FILES['caricare_file']['tmp_name']))
{

move_uploaded_file($_FILES['caricare_file']['tmp_name'],$direzione.$_FILES['caricare_file']['name']);
print ('La tua immagine è stata caricata <br>');

}


if(!in-array($_FILES['caricare_file_1']['type'],$tipi))
{

print ('errore');
exit;

}



if(is_uploaded_file($_FILES['caricare_file_1']['tmp_name']))
{

move_uploaded_file($_FILES['caricare_file_1']['tmp_name'],$direzione.$_FILES['caricare_file_1']['name']);
print ('La tua immagine è stata caricata <br>');

}


?>
Il problema che viene fuori pagina bianca, così facendo.. cosa ho sbagliato?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
"in_array" si scrive con "underscore", la pagina bianca è dovuta a questo errore ( nelle 2 righe di codice )

in più ti suggerisco di sostituire

PHP:
$tipi = array ("image/png", "image/jpg", "image/gif", "image/jpeg");
con
PHP:
$tipi = array("image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/x-png", "image/png");

e

PHP:
if(!in_array($_FILES['caricare_file']['type'],$tipi))
con
PHP:
if (!in_array(strtolower($_FILES["caricare_file"]["type"]), $tipi))

altrimenti potresti segnalare errore per file validi

per quanto riguarda la "pagina bianca", se sviluppi il tuo codice su un sistema windows,
e nessuno ha cambiato php.ini,
puoi trovare i messaggi di errore nel file phpXX_errors.log che trovi nel folder "C:\Windows\Temp"
XX è la versione di php, 53, 54, 55 ...

questo file esiste anche se lavori con linux, devi cercarlo perchè non so dove viene memorizzato
ciao
Marino
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
grazie mille per la risposta, mi potresti dire cosa fa la funzione strtolower?
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
PHP Parse error: syntax error, unexpected 'image' (T_STRING), expecting ')' in / (line 4)
l'errore è questo.. ma la sintassi a me sembra corretta
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
PHP:
$tipi = array ( ("image/gif"), ("image/jpeg"), ("image/jpg"), ("image/pjpeg"), (image/x-png), (image/png));

risolto.. non volevo seguire questo consiglio, è proprio brutto da vedere, ma funziona
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
capisco sempre ... poco, ma trovo la seguente scrittura più consona, ed essendo stata provata, priva di errori
PHP:
$tipi = array("image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/x-png", "image/png");
upload restituisce il tipo scritto sia in minuscolo sia parte in minuscolo e parte in maiuscolo, è più semplice la conversione che non scrivere tutti i casi previsti ...
ciao
Marino
 

ispanic

Utente Attivo
28 Ago 2014
119
0
0
o_O avevo scordato degli apici e con le parentesi sembrava funzionare, mentre non calcolava proprio l'array, scusami e grazie per i consigli e l'aiuto!
 
Ultima modifica:

ispanic

Utente Attivo
28 Ago 2014
119
0
0
capisco sempre ... poco, ma trovo la seguente scrittura più consona, ed essendo stata provata, priva di errori
PHP:
$tipi = array("image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/x-png", "image/png");
upload restituisce il tipo scritto sia in minuscolo sia parte in minuscolo e parte in maiuscolo, è più semplice la conversione che non scrivere tutti i casi previsti ...
ciao
Marino

Il problema è che così facendo se la prima è sbagliata, la seconda si può benissimo caricare, mentre io vorrei far sì che se anche una sola immagine è sbagliata lo script si ferma tutto immediatamente..
 
Discussioni simili
Autore Titolo Forum Risposte Data
I caricamento file in sottocartella nome utente PHP 3
A Caricamento file csv MySQL 2
M [Javascript] Caricamento menu da file esterno Javascript 8
T [PHP] rendere facoltativo il caricamento di un file PHP 5
L [PHP] Caricamento file multiplo PHP 3
C [Javascript] Caricamento asincrono file esterno Javascript 0
A [RISOLTO]Errore caricamento file php PHP 21
Monital [PHP] Eliminare la Barra di caricamento file alla fine dell'esecuzione PHP 11
M Comportamento strano di questo script per caricamento file sql in database PHP 7
IImanuII caricamento file in base al browser Snippet PHP 0
IImanuII Explorer a scatti php script caricamento file in base al browser PHP 4
Athene Gestione del caricamento di un file PHP 4
D caricamento e lettura file con revisione PHP 4
A caricamento file esterno Flash 0
A caricamento dinamico di un file .swf Flash 10
jeanzilla FLV - Caricamento file Video da Flash Flash 7
D caricamento file su db e modifica dati PHP 0
L Caricamento casuale file flash Javascript 5
D rotella di caricamento che si toglie quando parte il download Ajax 0
Y CARICAMENTO PARZIALE Javascript 1
R Cambiare il nome dell'immagine dopo caricamento ftp HTML e CSS 0
F Caricamento index rotto PHP 1
L Caricamento dominio con FTP già preesistente in rete Domini 2
R Caricamento immagine su cartella remota + mysql PHP 3
G Problema caricamento tabelle MySql da PhP PHP 0
N caricamento listini (Indesign) Webdesign e Grafica 0
X Dichiarare variabili solo al caricamento della pagina PHP 3
A [PHP] Caricamento database in array PHP 11
J [Javascript] Inserire un caricamento con animazione prima dell'esecuzione di un'azione Javascript 1
M [javascript] Aggiungere eventi al caricamento Javascript 0
F [HTML] Caricamento Audio con matching HTML e CSS 10
gandalf1959 caricamento jpg in database mysql PHP 1
giuseppe_123 [WordPress] problema installazione temi, plugin e caricamento immagini WordPress 5
B [PHP] Copiare testo da iframe dopo il caricamento? PHP 1
Mauro Guardiani [PHP] script per caricamento video PHP 0
MarcoGrazia [Javascript] Sistema di caricamento dinamico in base allo scrolling Javascript 3
MarcoGrazia [Javascript] Loader fino a caricamento della pagina Javascript 1
F [HTML] caricamento iframe HTML e CSS 1
G [Javascript] rendere visibile un iframe dopo l'avvenuto caricamento del video che esso contiene Javascript 4
E [Javascript] div "si sposta" al caricamento della pagina web Javascript 2
Fede72 PHP e caricamento immagini PHP 9
trattorino [Javascript] caricamento immagine con effetto fade Javascript 1
C Caricamento immagini PHP 12
I caricamento pagina PHP 1
G verifica caricamento foto originali su social network o sito di hosting immagini Discussioni Varie 3
A problema caricamento codice <iframe video youtube PHP 3
M Caricamento script php pagina bianca Javascript 2
C Attendere caricamento pagina prima di autologin Javascript 4
E Realizzare una finestra overlay con caricamento pagina html HTML e CSS 3
P Diminuire il tempo di caricamento JOOMLA Joomla 0

Discussioni simili