Upload multiplo con creazione di cartella

Raffaele Corso

Nuovo Utente
15 Mar 2013
4
0
0
Ciao a tutti,
sono ancora alle prime armi ed ho bisogno di un aiuto,
sto creando un sito di fotografia in cui le persone mi inviano le loro foto per poi elaborarle io,
cercando su internet o trovato questo upload multiplo funzionante,
la mia richiesta sta sul far creare una cartella all'interno del mio sito o di un eventuale ftp col nome del testo inserito sul campo usename,
e controllare se i campi sono stati riempiti

HTML:
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
Username <br>
 <input type='text' name='username'><br>
<label for="file">File:</label><br>
<input type="file" multiple="multiple" name="file[]" /> 
<br /><br />
<input type="submit" value="Invia" name="go"/>
</form>

</body>

PHP:
<?php
//sposto gli elementi in una directory chiamata file
if(isset($_FILES['file']))
    foreach($_FILES['file']['tmp_name'] as $key=>$value)
        @move_uploaded_file($value, dirname(__FILE__)."/file/".$_FILES['file']['name'][$key]);
?>
 
o modificato un po la parte html
HTML:
<body>
<form method="post" action="crea.php" >
<div >Tipologia Fotobook<br /><select class="mandatory" style=" width: 200px; margin-right: 10px; vertical-align: top; padding-top: 2px; padding-bottom: 2px;" name="tipologia"><option value="">-</option><option value="spirofoto">Spirofoto</option><option value="fotoquaderno">Foto quaderno</option><option value="fotobookmorbido">Fotobook morbido</option><option value="fotobookrigido">Fotobook rigido</option><option value="fotobookfotografico">Fotobook fotografico</option></select></div><br />
Titolo del book <br>(esempio "i miei 18°anni) <br>
<input type='text' name='titolo' size='35' ><br>
<div >Formato<br /><select class="mandatory" style=" width: 100px; margin-right: 10px; vertical-align: top; padding-top: 2px; padding-bottom: 2px;" name="formato"><option value="">-</option><option value="21x21">21x21</option><option value="21x29">21x29</option></select></div>
<br />
<label for="file">Filename:</label>
<input type="file" multiple="multiple" name="file[]" /> <br /><br />
<input type="submit" value="Avanti" />
</form>

</body>

PHP:
<?php

$titolo = $_POST['titolo' ]   ;
$formato = $_POST['formato' ]   ;
$tipologia = $_POST['tipologia' ]   ;
$crea1 = mkdir("fotobook/$tipologia/$formato", 0777);
$crea2 = mkdir("fotobook/$tipologia/$formato/$titolo", 0777);
if(isset($_FILES['file']))
    foreach($_FILES['file']['tmp_name'] as $key=>$value)
        @move_uploaded_file($value, dirname(__FILE__)."/fotobook/$tipologia/$formato/$titolo/".$_FILES['file']['name'][$key]);
?>

Il php mi funziona fino alla parte del crea cartelle dopo no non mi invia nulla, come posso modificarlo??
 
sono riuscito a farlo :)
posto qui l'upload con la creazione cartelle funzionante

HTML:
<body>
<form method="post" action="crea.php" enctype="multipart/form-data">
Username<br><input type='text' name='username' size='35' ><br>
Titolo del book <br>(esempio i miei 18 anni) <br>
<input type='text' name='titolo' size='35' ><br>
<div >Formato<br /><select class="mandatory" style=" width: 100px; margin-right: 10px; vertical-align: top; padding-top: 2px; padding-bottom: 2px;" name="formato"><option value="">-</option><option value="21x21">21x21</option><option value="21x29">21x29</option></select></div>
<br />
<label for="file">Filename:</label>
<input type="file" multiple="multiple" name="file[]" /> <br /><br />
<input type="submit" value="Avanti" />
</form>

</body>

PHP:
<?php

@$titolo = $_POST['titolo' ]   ;
@$formato = $_POST['formato' ]   ;
@$tipologia = $_POST['tipologia' ]   ;
@$user = $_POST['username' ]   ;
@$crea1 = mkdir("fotobook/spirofoto/$user", 0777); 
@$crea2 = mkdir("fotobook/spirofoto/$user/$titolo", 0777); 
@$crea3 = mkdir("fotobook/spirofoto/$user/$titolo/$formato", 0777); 
 if(isset($_FILES['file']))
    foreach($_FILES['file']['tmp_name'] as $key=>$value)
@$crea4 = move_uploaded_file($value, dirname(__FILE__)."/fotobook/spirofoto/$user/$titolo/$formato/".$_FILES['file']['name'][$key]);
if($crea4) { echo "<h1>File inviati corretamente</h1>"; }
else { echo "<h1>ERRORE NELL'INVIO DEI FILE!</h1> <form action='index.html' method='POST'>
<input type='submit' value='Torna indietro'>
</form>"; }

?>

se avete ulteriori consigli da darmi scrivete pure
 
ho provato ad usare questo tuo codice creando le due pagine l'index.html e la crea.php ... ma mi dice sempre errore nell'invio del file
 
Scusa la mia ignoranza.... mi potresti per cortesia fare l'esempio?
Avevo modificato questo
@$user = $_POST['username' ]
in
@$username = $_POST['username' ]
e ogni tanto mi funzionava ma non va bene se non funziona al 100 per cento.

mi potresti scrivere il codice PHP giusto? Te ne sarei grato
 
ciao
devi togliere i silemt (la @) e fare un controllo di quello che avviene
ti faccio tre esempi schematici
es. 1
PHP:
<?php
$user = trim($_POST['username' ]);//tolgo eventuali spazi, se uno mette solo spazi la stringa si vuota
if(!preg_match('/^[A-Z]{4,9}$/',$user)){//in user, es, possono esserci solo caratteri alfabetici maiuscoli lungo min 4 max 9
	/*non è giusto, avvisi
	e quindi riinvii al form o dove vuoi*/
}
//.....
?>
es. 2
PHP:
<?php
$crea1 = mkdir("fotobook/spirofoto/$user", 0777);
if(!$crea1){
	/*la cartella  non o stata creata, avviso
	e ritorni a dove vuoi*/
}
//.....
?>
analogo discorso (molto importante) nel caricare i file; devi verificare che siano file ammessi, potrebbero caricarti delle porcherie
es. 3
PHP:
<?php
$estensione=pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$ammessi=array('jpg','gif','png');//elenco dei tipi ammessi
if(!in_array($estensione,$ammessi)){
	/* tipo di file non ammesso
	avvisi e rimandi dove vuoi*/
}else{
	//carichi i file
}
//....
?>
nell'ultimo caso è importante perchè se fai
@$crea4 = move_uploaded_file($value ecc...
e basta non ti da (se ci fosse errore) e qualcuno potrebbe caricarti cancella_tutto.exe
certo devi lavorare di più e l'uso del silent sembra facilitare, ma come minimo rischi che qualcuno ti mandi in palla lo script e non ci fai una bella figura
 
Grazie
Avevo ovviato al primo punto mettendo dei campi obbligatori di scelta <option value="">-</option> perciò senza potere scrivere.....ora mi occuperò e hai ragione delle estensioni anche se nel mio caso...non so proprio dove metterlo ... hahah
ho modificato un po di cose......
PHP:
<?php 

$anno = $_POST['anno' ]   ; 
$corso= $_POST['corso' ]   ; 
$username = $_POST['username' ]   ; 
$crea1 = mkdir("Archivio/$username", 0777);  
$crea2 = mkdir("Archivio/$username/$anno", 0777);  
$crea3 = mkdir("Archivio/$username/$anno/$corso", 0777);  
 if(isset($_FILES['file'])) 
    foreach($_FILES['file']['tmp_name'] as $key=>$value) 
$crea4 = move_uploaded_file($value, dirname(__FILE__)."/Archivio/$username/$anno/$corso/".$_FILES['file']['name'][$key]); 
if($crea4) { echo "<h1>File inviati corretamente - Puoi tornare indietro </h1> "  ; } 
else { echo "<h1>ERRORE NELL'INVIO DEI FILE!</h1> <form action='http://elezionifavara.altervista.org/area-privata/' method='POST'> 
<input type='submit' value='Torna indietro'> 
</form>"; } 

?>

il tuo terzo esempio dove dovrei integrarlo nel mio caso.....scusa ma sono proprio una frana!!!
 

Discussioni simili