Fare upload di file scegliendo la cartella di destinazione

Max61

Utente Attivo
2 Mar 2014
713
3
18
Salve sto utilizzando questo codice per importare un file pdf nella cartella di nome 'Delibere' nel server
Mi chiedevo se fosse possibile nella fase di upload scegliere la cartella di destinazione di volta in volta che eseguo l'upload.
Allego codice utilizzato per l'upload

PHP:
// settiamo alcune variabili coinvolte nello script:  

$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/Delibere/';
 
// 2) settiamo un array in cui indichiamo il tipo di file che consentiamo l'upload  
$tipi_consentiti = array("xls","xlsx","doc","docx","pdf");   
    
// 3) settiamo la dimensione massima del file 
$max_byte = 10000;  
  
  
// se il form è stato inviato  
if(isset($_POST['up']) and isset($_FILES["upload"]))  
   {  
   // verifichiamo che l'utente abbia selezionato un file  
   if(trim($_FILES["upload"]["name"]) == '')  
      {  
      echo 'Non hai selezionato nessun file!';  
      }  
  
   // verifichiamo che il file è stato caricato  
   else if(!is_uploaded_file($_FILES["upload"]["tmp_name"]) or $_FILES["upload"]["error"]>0)  
      {  
      echo 'Si sono verificati problemi nella procedura di upload!';  
      }  
  
   // verifichiamo che il tipo è fra quelli consentiti  
   else if(!in_array(strtolower(end(explode('.', $_FILES["upload"]["name"]))),$tipi_consentiti))  
      {  
      echo 'Il file che si desidera uplodare non è fra i tipi consentiti!';  
      }  
  
   // verifichiamo che la dimensione del file non eccede quella massima  
   else if($_FILES["upload"]["size"] > $max_byte)  
      {  
      echo 'Il file che si desidera uplodare eccede la dimensione massima!';  
      }  
      
    // verifichiamo che la cartella di destinazione settata esista  
    else if(!is_dir($cartella_upload))  
        {  
        echo 'La cartella in cui si desidera salvare il file non esiste!';  
        }  
      
    // verifichiamo che la cartella di destinazione abbia i permessi di scrittura  
    else if(!is_writable($cartella_upload))  
        {  
        echo "La cartella in cui fare l'upload non ha i permessi!";  
        }  
   // verifichiamo il successo della procedura di upload nella cartella settata  
   else if(!move_uploaded_file($_FILES["upload"]["tmp_name"], $cartella_upload.$_FILES["upload"]["name"]))  
      {  
      echo 'Ops qualcosa è andato storto nella procedura di upload!';  
      }  
  
   // altrimenti significa che è andato tutto ok  
   else  
      { 
	  echo "<h1><span style=\"color:red; font-size: 16pt\"> Upload eseguito correttamente! </h1></span><br>"; 
	  //echo 'Upload eseguito correttamente!';  
      }  
   }

Grazie anticipato a chi saprà aiutarmi
Max61
 

akp

Utente Attivo
8 Giu 2015
133
0
16
Puoi provare utilizzando la select

Inviato dal mio XT1068 utilizzando Tapatalk
 

akp

Utente Attivo
8 Giu 2015
133
0
16
per esempio nel form potresti inserire questa select in modo tale da scegliere la directory che ti interessa
HTML:
<select name="directory">
   <option value="directory1">directory1</option>
   <option value="directory2">directory2</option>
   <option value="directory3">directory3</option>
</select>

..altrimenti sempre nel form puoi mettere un input cosi ogni volta che fai l'upload scrivi in quale directory deve salvarsi il file
HTML:
<input type="text" name="directory" />

quindi nel php devi modificare la seguente stringa da :
PHP:
// settiamo alcune variabili coinvolte nello script:  

$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/Delibere/';

a

PHP:
if isset($_POST['directory']) {
  $directory = $_POST['directory'];
}

$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/'.$directory.'/';
 

Max61

Utente Attivo
2 Mar 2014
713
3
18
per esempio nel form potresti inserire questa select in modo tale da scegliere la directory che ti interessa
HTML:
<select name="directory">
   <option value="directory1">directory1</option>
   <option value="directory2">directory2</option>
   <option value="directory3">directory3</option>
</select>

..altrimenti sempre nel form puoi mettere un input cosi ogni volta che fai l'upload scrivi in quale directory deve salvarsi il file
HTML:
<input type="text" name="directory" />

quindi nel php devi modificare la seguente stringa da :
PHP:
// settiamo alcune variabili coinvolte nello script:  

$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/Delibere/';

a

PHP:
if isset($_POST['directory']) {
  $directory = $_POST['directory'];
}

$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/'.$directory.'/';


Ciao e grazie per le dritte, ma cerco di spiegarti cosa vorrei fare:
ARCHIVIAZIONE DIGITALE TRAMITE SCANNERIZZAZIONE DI DOCUMENTI CHE SONO ALL'INTERNO DI FALDONI
Il programma è fatto e mi rimane da fare la parte dell'importazione nel server dei documenti scannerizzati, in questa fase utilizzo 3 form: form insert dati a video, form inserisci nel db e form upload file
Io avevo pensato di fare una cosa del genere
nella form insert l'utente digita tra gli altri 3 campi 'ARMADIO' 'PIANO' e 'FALDONE' di cui recupero i valori per la creazione della cartella che conterrà la documentazione scannerizzata e con questo codice
PHP:
//CREA CARTELLA NEL SERVER CON IL NOME DI: ARMADIO-PIANO-FALDONE 
$path="Delibere/"."Delibere Armadio ". $_POST['armadio']."-Piano ". $_POST['piano']."-Faldone ". $_POST['faldone']."-Faldone ". $_POST['ex_statistica']; 
mkdir("$path",0777);
creo la cartella con il nome univoco ARMADIO-PIANO-FALDONE (es. 1-A-1, 1-A-2, 1-A-3 ecc.) e così per ogni faldone che archivio.
Quindi arrivo alla form upload file con la quale vorrei andare a selezionare i file che fanno parte di quel faldone ed archiviarli nella cartella appena creata con l'insert e tramite comando
PHP:
<input type="submit" value="Apri cartella">
visualizzare tutta la documentazione all'interno del faldone senza dover andare a cercare nell'archivio cartaceo.
Quindi la tua idea è buona però dovrei recuperare il nome della cartella che viene creata al momento dell'inserimento nel db.
In conclusione dovrei fare una select che mi recuperi il percorso della cartella appena creta e me lo salvi nel db così da recuperare i dati velocemente.

Ho provato il tuo codice, mi da questo errore
Parse error: syntax error, unexpected 'isset' (T_ISSET), expecting '(' in C:\xampp\htdocs\ArchivioToponomastica\views\UploadDelibere.php on line 68
il rigo con l'errore è questo
PHP:
if isset($_POST['directory']) {

Con la speranza di essermi spiegato
Max61
 
Ultima modifica:

akp

Utente Attivo
8 Giu 2015
133
0
16
Ciao e grazie per le dritte, ma cerco di spiegarti cosa vorrei fare:
ARCHIVIAZIONE DIGITALE TRAMITE SCANNERIZZAZIONE DI DOCUMENTI CHE SONO ALL'INTERNO DI FALDONI
Il programma è fatto e mi rimane da fare la parte dell'importazione nel server dei documenti scannerizzati, in questa fase utilizzo 3 form: form insert dati a video, form inserisci nel db e form upload file
Io avevo pensato di fare una cosa del genere
nella form insert l'utente digita tra gli altri 3 campi 'ARMADIO' 'PIANO' e 'FALDONE' di cui recupero i valori per la creazione della cartella che conterrà la documentazione scannerizzata e con questo codice
PHP:
//CREA CARTELLA NEL SERVER CON IL NOME DI: ARMADIO-PIANO-FALDONE 
$path="Delibere/"."Delibere Armadio ". $_POST['armadio']."-Piano ". $_POST['piano']."-Faldone ". $_POST['faldone']."-Faldone ". $_POST['ex_statistica']; 
mkdir("$path",0777);
creo la cartella con il nome univoco ARMADIO-PIANO-FALDONE (es. 1-A-1, 1-A-2, 1-A-3 ecc.) e così per ogni faldone che archivio.
Quindi arrivo alla form upload file con la quale vorrei andare a selezionare i file che fanno parte di quel faldone ed archiviarli nella cartella appena creata con l'insert e tramite comando
PHP:
<input type="submit" value="Apri cartella">
visualizzare tutta la documentazione all'interno del faldone senza dover andare a cercare nell'archivio cartaceo.
Quindi la tua idea è buona però dovrei recuperare il nome della cartella che viene creata al momento dell'inserimento nel db.
In conclusione dovrei fare una select che mi recuperi il percorso della cartella appena creta e me lo salvi nel db così da recuperare i dati velocemente.

Ho provato il tuo codice, mi da questo errore
Parse error: syntax error, unexpected 'isset' (T_ISSET), expecting '(' in C:\xampp\htdocs\ArchivioToponomastica\views\UploadDelibere.php on line 68
il rigo con l'errore è questo
PHP:
if isset($_POST['directory']) {

Con la speranza di essermi spiegato
Max61

ciao, se ho capito bene a te serve recuperare l'ultima cartella inserita. Se cosi fosse potresti utilizzare la seguente funzione :
PHP:
mysql_insert_id();
questa funzione ti ritorna l'ultimo id inserito, quindi successivamente ti potresti far ritornare qualsiasi campo(IN QUESTO CASO IL NOME DELLA CARTELLA) relativo a quell'id.

Il codice che ti ho inviato ti da errore perche ho dimenticato a mettere la parentesi all'if
PHP:
 if (isset($_POST['directory'])) {
 

Max61

Utente Attivo
2 Mar 2014
713
3
18
ciao, se ho capito bene a te serve recuperare l'ultima cartella inserita. Se cosi fosse potresti utilizzare la seguente funzione :
PHP:
mysql_insert_id();
questa funzione ti ritorna l'ultimo id inserito, quindi successivamente ti potresti far ritornare qualsiasi campo(IN QUESTO CASO IL NOME DELLA CARTELLA) relativo a quell'id.

Il codice che ti ho inviato ti da errore perche ho dimenticato a mettere la parentesi all'if
PHP:
 if (isset($_POST['directory'])) {


Ciao
l'ultimo id già lo recupero per stampare ed è questo, ho fatto alcune prove ma non riesco a recuperare l'ultima cartella inserita
allego codice che utilizzo per la stampa

PHP:
$ultimo_id = mysql_insert_id();
            //    ****************** ****************************************** ******************

			$id =$ultimo_id;	
			echo '
		<p>
		
		<a href="Edit_Libri.php?id=' .$id. '">Stampa</a>
		
		</p>
		<hr />';

Analogamente ho creato un campo di nome linkcartella
quindi...
PHP:
$linkcartella="Armadio ". $_POST['armadio']."-Piano ". $_POST['piano']."-Faldone ". $_POST['faldone']."". $_POST['ex_statistica']; 
		echo $linkcartella;
//		exit;
		$ultimo_idlinkcartella = mysql_insert_id();
            //    ****************** ****************************************** ******************

			$linkcartella =$ultimo_idlinkcartella;	
			echo $linkcartella;
			echo '
		<p>
		<hr />';

Ciao
Max61
 
Ultima modifica:

akp

Utente Attivo
8 Giu 2015
133
0
16
Ciao
l'ultimo id già lo recupero per stampare ed è questo, ho fatto alcune prove ma non riesco a recuperare l'ultima cartella inserita
allego codice che utilizzo per la stampa

PHP:
$ultimo_id = mysql_insert_id();
            //    ****************** ****************************************** ******************

			$id =$ultimo_id;	
			echo '
		<p>
		
		<a rel="nofollow" href="Edit_Libri.php?id=' .$id. '">Stampa</a>
		
		</p>
		<hr />';

Ciao
Max61

ciao, con quell'id dovresti fare un'altra query in modo tale da farti ritornare il nome della cartella
PHP:
$query = "SELECT NomeCartella FROM quellochevuoi WHERE id = $id";
 

Max61

Utente Attivo
2 Mar 2014
713
3
18
Scusami ma mi son perso,
la cartella viene creata direttamente nel server e non ho traccia nella tabella ne del nome ne del link per arrivarci, come faccio a recuperare l'id e il nome della cartella?
Ciao
Max61
 

akp

Utente Attivo
8 Giu 2015
133
0
16
Allora quando crei la cartella dovresti anche salvarti il suo percorso nella tabella. In questo modo potrai recuperla con l'id

Inviato dal mio XT1068 utilizzando Tapatalk
 

Max61

Utente Attivo
2 Mar 2014
713
3
18
Ultima modifica:

Max61

Utente Attivo
2 Mar 2014
713
3
18
Fatto ho aggiunto il prefisso.
Funziona!!!
Ora manca da definire l'upload
Grazie
Max61
 

Max61

Utente Attivo
2 Mar 2014
713
3
18
Ciao akp e grazie per il tuo prezioso aiuto, ho sostituito la parte di codice che mi hai suggerito ma ancora non riesco a centrare la cartella appena creata, infatti mette i files importati in 'http://localhost/ArchivioToponomastica/views/' e non riesco a passargli la cartella giusta...cosa sbaglio?
Ho anche provato a passargli tramite post il link della cartella che mi hai fatto creare ieri, ma niente, anzi mi da sempre questo errore:
Notice: Undefined variable: directory in C:\xampp\htdocs\ArchivioToponomastica\views\UploadDelibere.php on line 72
Allego codice che mi hai suggerito:
PHP:
<?php    
// settiamo alcune variabili coinvolte nello script:  
if (isset($_POST['directory'])) {  
  $directory = $_POST['directory'];
}

$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/'.$directory.'/';
Qualche suggerimento?

Grazie
Max61
 

akp

Utente Attivo
8 Giu 2015
133
0
16
ciao dovresti allegrare il file che invii in questo modo
PHP:
$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/'.$directory.'/'.$ilfilechevuoiinserire;
 

Max61

Utente Attivo
2 Mar 2014
713
3
18
ciao dovresti allegrare il file che invii in questo modo
PHP:
$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/'.$directory.'/'.$ilfilechevuoiinserire;

Ciao ho provato il codice che mi hai postato, una cosa del genere l'avevo provata ieri, ma non funziona perchè non riesco a passargli il valore del campo linkcartella è il campo che contiene l'indirizzo dell'ultima cartella creata.

Ho provato a fare anche una query select e mi da questo errore:
Undefined variable: id in C:\xampp\htdocs\ArchivioToponomastica\views\UploadDelibere.php on line 88,
ho messo un echo e mi restituisce il valore 0...
Codice utilizzato:
PHP:
// settiamo alcune variabili coinvolte nello script:  
if (isset($_POST['directory'])) {  
  $directory = $_POST['directory'];
}

$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/'.$directory.'/'.$linkcartella;
HELP!
Ciao
Max61
 
Ultima modifica:

akp

Utente Attivo
8 Giu 2015
133
0
16
Ciao ho provato il codice che mi hai postato, una cosa del genere l'avevo provata ieri, ma non funziona perchè non riesco a passargli il valore del campo linkcartella è il campo che contiene l'indirizzo dell'ultima cartella creata.

Ho provato a fare anche una query select e mi da questo errore:
Undefined variable: id in C:\xampp\htdocs\ArchivioToponomastica\views\UploadDelibere.php on line 88,
ho messo un echo e mi restituisce il valore 0...
Codice utilizzato:
PHP:
// settiamo alcune variabili coinvolte nello script:  
if (isset($_POST['directory'])) {  
  $directory = $_POST['directory'];
}

$cartella_upload = $_SERVER['DOCUMENT_ROOT'].'/ArchivioToponomastica/views/'.$directory.'/'.$linkcartella;
HELP!
Ciao
Max61
Se riesci postami tutto il codice relativo all'upload

Inviato dal mio XT1068 utilizzando Tapatalk
 

akp

Utente Attivo
8 Giu 2015
133
0
16
questo POST da dove lo prendi?
PHP:
// settiamo alcune variabili coinvolte nello script:  
if (isset($_POST['directory'])) {  
  $directory = $_POST['directory'];
}

Poi devi controllare se nel database viene salvato il nome della cartella.
 

Max61

Utente Attivo
2 Mar 2014
713
3
18
Ciao il post era una prova ed è rimasta, la puoi togliere

Nel database viene salvato l'indirizzo della cartella che utilizzo per aprirla il campo l'ho chiamato linkcartella

Ciao
Max61
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
M Rinominare filename immagine prima di fare l'upload PHP 2
C cerco consigli per fare upload HTML e CSS 8
R [C#] Fare varie operazioni nel proprio account Facebook .NET Framework 0
M Come fare un countdown in HTML? HTML e CSS 4
C Io acquisto locale,riportare persone a fare acquisti locali Discussioni Varie 0
M Quando ha l'immagine ingrandita è possibile fare rotazione per ritagliare? Photoshop 0
W fare la somma di un valore estratto da un ciclo while Classic ASP 0
G Fare uno sfondo con il prato e degli alberi Photoshop 0
G Contratto TIM e continue rimodulazioni, cosa si può fare? Leggi, Normative e Fisco 3
P Vorrei fare un ripetitore di Internet Reti LAN e Wireless 3
B Fare calcoli con php da tabella mysql PHP 2
Web93 RICHIESTA CONSIGLIO - FARE UN SITO WEB CMS (Content Management System) 1
S [PHP] Estrarre dati da tabella e fare la media ad intervalli di tempo PHP 10
M [PHP] Modi per fare redirect 301 da http a https PHP 12
C [Photoshop] bordi tondi come posso fare per ottenerli come nell'immagine allegata Photoshop 2
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
D [ASP] si può fare? Classic ASP 29
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
W inclusioni css in eccesso, cosa fare? HTML e CSS 1
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
P [Gratuito][Cerco] qualcuno per fare menu a tendina ottimizzato per mobile-responsive con css e html Offerte e Richieste di Lavoro e/o Collaborazione 3
S Miglior regalo da fare ad un programmatore Discussioni Varie 6
M [WordPress] [HTML] INTEGRARE GESTIONALE IMMOBILIARE SU UN SITO WEB DA FARE WordPress 0
T PHP: aggiunta a query che non so fare... PHP 2
M [cosa fare?] pagina facebook Social Media Marketing 1
G Fare scaricare con M.O. solo la posta nuova. Posta Elettronica 3
G Vuoi fare successo? Abbiamo bisogno di aiuto per un app! Offerte e Richieste di Lavoro e/o Collaborazione 1
A [PHP] Fare tableau prenotazioni Hotel PHP 4
P Javascript, ricevere responso da PHP. Come fare? Javascript 1
R Può secondo voi un sito essere nella seconda pagina e non fare traffico? SEO e Posizionamento 3
booklisa Errore 403 - che fare? CMS (Content Management System) 1
S Come fare 5000 amici evitando il ban? Social Media Marketing 2
M Consigli prima di fare qualsiasi passo Domini 8
M [PHP] selezionare dati da db e fare confronti PHP 0
otto9due Si può fare questa cosa qui.. :P ( this > p ) jQuery 1
S [PHP] Interazione tra due finestre. Come fare? PHP 4
I COME POSSO FARE PER ORGANIZZARE LA PRODUZIONE SU EBAY??? Discussioni Varie 2
2 Come fare disdetta sky Adsl e Connettività 1
L Fare sparire un sito dalle ricerche SEO e Posizionamento 4
G Come si a fare una riga con pallini con photoshop? Photoshop 1
G Errori PHP è possibile fare un redirect ad una pagina d'errore? PHP 3
B Stilizzazione vecchio logo, come fare?? Photoshop 3
R amministratori di forum disposti a fare marketing per conto terzi Email Marketing 0
M Fare query prendendo i dati da 3 tabelle PHP 2
S Utilizzare la funzione postmessage per fare un redirect Javascript 0
U Fare una chiamata post con Angularjs Javascript 3
matteoraggi Foto di un sito finite in siti spam, che fare? Webdesign e Grafica 3
V titolo più immagine - come fare? HTML e CSS 7
L Fare siti web PHP 5
catellostefano Non so che tipo di querly fare MySQL 3

Discussioni simili