-
Upload di file sul sito
Salve a tutti,
scusate il mio sconcerto ma è mezza giornata che cerco di verificare il funzionamento di un semplicissimo script per uploadare immagini sul server
Codice PHP:
<?php
$nomefile = $_FILES['foto']['name'];
$destinazione = "../news/foto/";
if ($_FILES['foto']['size']>250000)
die("Errore: dimensioni del file troppo grandi!");
$allowed_types = array("image/gif","image/jpeg","image/png");
if(!in_array($_FILES['foto']['type'],$allowed_types)) {
die("Upload non consentito per questo tipo di file. ");
}
$temp = $_FILES['foto']['temp_name'];
move_uploaded_file($temp, $destinazione.$nomefile);
?>
Questa è solo l'ultima versione di una decina di test che ho fatto (se non di più). Nello specifico appena cerco di caricare un'immagine mi esce l'errore relativo la type, ma comunque anche provando senza alcun controllo non riesco a caricare nessuna immagine (e pensare che dopo volevo pure passare il link a un db)
Ho dimenticato qualche passaggio (ma a parte qualche verifica su dimensione e peso non credo) oppure per uploadare su AV bisogna inserire qualche specifico parametro o passaggio?
Sul forum avevo intravisto una discussione in cui qualcuno diceva di inserire come target membri/nomesito/ecc. ma non trovo il link adesso
-
Molto dipende da come è stato fatto il form. Non mi sembra ci siano particolari errori nello script. Può non funzionare per molti motivi; uno dei tanto è che non esistono le cartelle "$destinazione".
Comunque cercando un attimo nel forum troverai tanti script già fatti e funzionanti. Esempio:
http://forum.it.altervista.org/how/5...-di-files.html
http://forum.it.altervista.org/php-m...pload-php.html
Ciao!
-
Il form è semplicemente questo
Codice HTML:
<form id="form1" name="form1" method="post" action="prova.php" enctype="multipart/form-data">
<input type="file" name="foto" id="foto">
<input type="submit" name="invia" id="invia" value="Invia" />
</form>
Prima di incorporarlo con tutto il resto preferisco testare le parti singolarmente.
Il primo link che hai indicato è proprio quello a cui mi riferivo alla fine del post precedente. La cartella di destinazione esiste perché l'ho caricata appositamente, ma devo aggiungere altro prima del percorso per vederla caricata sul server?
Perché adesso, anche nel caso non mi dia errori non la carica l'immagine.
-
Prova con la is_dir() se veramente la destinazione esiste.
(ok che hai creato la cartella, ma potrebbe essere sbagliato il percorso).
Ciao!
-
Mi da esito positivo, d'altronde l'avevo inserita anche allo stesso livello.
Però continua a non farmi vedere le immagini caricate sul server, ho provato anche a usare scandir() per vederne il contenuto e mi riporta aolo questo:
Array ( [0] => . [1] => .. ) Array ( [0] => .. [1] => . )
EDIT ho usato la formula di scandir direttamente dal manuale di PHP
Codice PHP:
$dir1 = '../news/foto';
$files1 = scandir($dir1);
$files2 = scandir($dir1, 1);
print_r($files1);
print_r($files2);
-
Ciao, avevo un problema simile al tuo e ho risolto con un path assoluto /membri/tuosito/images/new/
Spero ti torni utile =)
-
Ciao mtblegacy
grazie per il suggerimento, ma non credo sia la directory il problema. Usando is_dir() e scandir() ho verificato la sua esistenza e il suo contenuto. Il problema è che continua a bloccarmi sull'errore del mime-type anche se carico le immagini giuste.
Non ho ancora trovato una soluzione, strano
Comunque ho provato anche con il path assoluto e non cambia niente
-
Ragazzi non riesco a venirne a capo, ho provato testare la pagina su un altro hosting ma ho gli stessi problemi, mi blocca al mime-type error
La cartella foto è allo stesso livello di questo file, ma continua a bloccarmi anche se carico immagini jpeg
Codice HTML:
<form id="form1" name="form1" method="post" action="prova.php" enctype="multipart/form-data">
<input type="file" name="foto" id="foto">
<input type="submit" name="invia" id="invia" value="Invia" />
</form>
Codice PHP:
<?php
//carichiamo le immagini sul server
//passiamo le variabili che ci servono
$nomefile = $_FILES['foto']['name'];
$destinazione = "foto/";
$temp = $_FILES['foto']['temp_name'];
//verifichiamo le dimensioni dell'immagine
if ($_FILES['foto']['size']>250000)
die("Errore: dimensioni del file troppo grandi!");
//verifichiamo che il file caricato sia un'immagine jpeg, png o gif
if ($_FILES['foto']['type'] |= "image/jpeg") die ("Tipo di file non supportato. Sono consentite solo immagini jpeg");
//carichiamola nella cartella assegnandole il suo nome originale
move_uploaded_file($temp, $destinazione.$nomefile);
?>
Non ho idee, esiste un altro metodo per caricare foto o è ancora valido questo?