-
Problema con input file
Ciao a tutti ho un problema con un form file
Praticamente ho scritto:
Codice PHP:
echo " <td class='text2' align='center'>Carica l'immagine: <input type='file' name='filetoupload'></td>";
E dopo il pulsante:
Codice PHP:
$file_tmp = $_FILES['filetoupload']['tmp_name'];
$file_name = $_FILES['filetoupload']['name'];
$file_name = str_replace(' ', '_', $file_name);
I campi text che importo allo stesso modo funzionano ma quello file no xk?
-
Hai messo al form l'attributo enctype="multipart form-data"?
-
Ho scritto così ma non funziona:
Codice PHP:
function Ad_Production()
{
echo "<form method='POST'>";
echo "<table width='95%' align='center'>";
echo " <tr>";
echo " <td class='text2' align='center'>Inserisci il nome: <input type='text' name='production' value='$production' size='40'></td>";
echo " </tr>";
echo " <tr>";
echo " <td> </td>";
echo " </tr>";
echo " <tr>";
echo " <td class='text2' align='center'>Carica l'immagine: <input type='file' name='filetoupload' enctype='multipart/form-data' method='post'></td>";
echo " </tr>";
echo " <tr>";
echo " <td> </td>";
echo " </tr>";
echo " <tr>";
echo " <td align='center'><input type='submit' value='Salva' name='ad_production'></td>";
echo " </tr>";
echo "</table>";
echo "</form>";
}
if (!isset($_POST['ad_production'])) {
Ad_Production();
} else {
//setto le variabili
$production = trim(htmlspecialchars($_POST['production']));
$link_directory = "http://www.worldtechitalia.it/image/production";
$alternative = "Immagine non disponibile";
$upload_dir = "../../../image/production/";
$file_tmp = $_FILES['filetoupload']['tmp_name'];
$file_name = $_FILES['filetoupload']['name'];
$file_name = str_replace(' ', '_', $file_name);
$data = date('d/m/Y',time());
$ora = date('H:i:s',time());
$error = 0;
$error_priority = 0;
-
L'attributo devi darlo al form non al tag input :wink:!
Codice PHP:
function Ad_Production()
{
echo "<form method='POST' enctype='multipart/form-data'>";
echo "<table width='95%' align='center'>";
echo " <tr>";
echo " <td class='text2' align='center'>Inserisci il nome: <input type='text' name='production' value='$production' size='40'></td>";
echo " </tr>";
echo " <tr>";
echo " <td> </td>";
echo " </tr>";
echo " <tr>";
echo " <td class='text2' align='center'>Carica l'immagine: <input type='file' name='filetoupload'></td>";
echo " </tr>";
echo " <tr>";
echo " <td> </td>";
echo " </tr>";
echo " <tr>";
echo " <td align='center'><input type='submit' value='Salva' name='ad_production'></td>";
echo " </tr>";
echo "</table>";
echo "</form>";
}
if (!isset($_POST['ad_production'])) {
Ad_Production();
} else {
//setto le variabili
$production = trim(htmlspecialchars($_POST['production']));
$link_directory = "http://www.worldtechitalia.it/image/production";
$alternative = "Immagine non disponibile";
$upload_dir = "../../../image/production/";
$file_tmp = $_FILES['filetoupload']['tmp_name'];
$file_name = $_FILES['filetoupload']['name'];
$file_name = str_replace(' ', '_', $file_name);
$data = date('d/m/Y',time());
$ora = date('H:i:s',time());
$error = 0;
$error_priority = 0;
-
Ciao posso farti ancora una domanda?
Dato che questo caricamento file importarà solo immagini volevo sapere se potevo creare un if che blocca certi formati?
E come ultima cosa posso sapere di che dimensione è l'immagine che sto per importare?
Grazie mille
-
Certo che puoi farlo :)
Il mime-type e le dimensione del file sono contenute nell'array $_FILES:
Codice PHP:
$consentiti = array("image/gif", "image/x-png", "image/png", "image/pjpeg", "image/jpeg", "image/bmp", "image/ief", "image/svg+xml", "image/tiff"); // mime type solo di immagini
$kb = 512; // kilobyte massimi per files
if(!in_array($_FILES["filetoupload"]["type"], $consentiti)) { // se il mime-type del file non è presente nell'array $consentiti
exit("Puoi caricare solo immagini!");
} else if(ceil($_FILES["filetoupload"]["size"] / 1024) > $kb) { // se occupa è più di $kb
exit("Il file occupa troppo, il massimo è {$kb}kb";
} else { // prosegui con l'upload :)
// upload!
}
-
Grazie per i formati ma per le dimensioni mi sono espresso male intendevo se si poteva verificare la dimensioni in px
-
Ho capito ma si può fare comunque:
Codice PHP:
$consentiti = array("image/gif", "image/x-png", "image/png", "image/pjpeg", "image/jpeg", "image/bmp", "image/ief", "image/svg+xml", "image/tiff"); // mime type solo di immagini
$max_w = 500;
$max_h = 500;
list($w, $h, $t, $a) = getimagesize($_FILES["filetoupload"]["tmp_name"]);
if(!in_array($_FILES["filetoupload"]["type"], $consentiti)) { // se il mime-type del file non è presente nell'array $consentiti
exit("Puoi caricare solo immagini!");
} else if($w > $max_w || $h > $max_h) { // se la larghezza è maggiore di $w o l'altezza è maggiore di $h
exit("La risoluzione massima è di {$max_w}x{$max_h}px");
} else { // prosegui con l'upload :)
// upload!
}
-
Grazie mille sei un mito!