• Home
  • Forum
  • Fare Web
  • PHP

Form invio file multipli

  • Creatore Discussione Creatore Discussione Salvo Salvi
  • Data di inizio Data di inizio 20 Mag 2013
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 22 Mag 2013
  • #21
scusa, ma il file zip non viene creato in automatico?
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 22 Mag 2013
  • #22
Se non riusciamo a zippare i file che l'utente mi invia, dovrei fare diversamente.
Creo 6 campi nella tabella ordine ed carico i file che l'utente mi invia dentro una cartella e salvo il percorso nel db credi che cosi sarà possibile?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 22 Mag 2013
  • #23
ciao
sto cercando di fare delle prove, ma ho dei problemi con la classe
mo è comunque venuto un piccolo dubbio, sto cercando di capire se i file sono caricati nella cartella temp
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 22 Mag 2013
  • #24
allora io ho trovato lo sbaglio. Non trova i file da zippare,
quindi credo che bisogna caricare i file nella cartella uploads con un ciclo for credo...
dopodichè bisogna Creare lo zip e inserire i file che sono stati caricati dentro la cartella uploads,
salvare lo zip, ed eliminare i file. se riesci fammelo sapere io sto facendo delle prove
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 22 Mag 2013
  • #25
$lista = $_FILES['files']['tmp_name'];
$bomba = $_FILES['files']['name'];

$archivia = new ZipArchive();
$nome_file = time().".zip";
$archivia->open($nome_file, ZIPARCHIVE::CREATE);

foreach ($lista as $nome_immagine) {

$file = basename($nome_immagine);
/*operazioni di upload*/

$primonumeronome = rand(1,9);
$secondonumeronome = rand(1111,9999);
$terzonumeronome = rand(1, 111);
$quartonumeronome = rand (1, 11112);
$nomefile = $primonumeronome ."". $secondonumeronome ."". $terzonumeronome ."". $quartonumeronome;


move_uploaded_file($nome_immagine, $nomefile);

$info = pathinfo($nome_immagine);

echo "estenzione ".$info['extension'], "\n";


$archivia->addFile('$nomefile');





}

come faccio ad estrapolare il formato del file? cosi non funziona
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 22 Mag 2013
  • #26
PHP:
<?php


$lista = $_FILES['files']['tmp_name'];
 
 
 $archivia = new ZipArchive(); 
$nome_file = time().".zip"; 
$archivia->open($nome_file, ZIPARCHIVE::CREATE);  
 
foreach ($lista as $nome) {

   $file = ($nome);
   /*operazioni di upload*/

    $primonumeronome = rand(1,9);
	$secondonumeronome = rand(1111,9999);
	$terzonumeronome = rand(1, 111);
	$quartonumeronome = rand (1, 11112);
	$nomefile = $primonumeronome ."". $secondonumeronome ."". $terzonumeronome ."". $quartonumeronome;
   
   echo $file;
   
   move_uploaded_file($file, $nomefile.".txt");
      
   $archivia->addFile($nomefile.".txt");
   




  }

   echo "Sono stati zippati: " . $archivia->numFiles . " file.\n"; 
$archivia->close(); 
move_uploaded_file($nome_file, time().".zip");
?>

Questo script che ho creato funziona solo se carichiamo i file .txt come faccio da un file temporaneo a trovare l'estenzione
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 22 Mag 2013
  • #27
POSTO LO SCRIPT VINCITORE =)


PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>
<?php


$lista = $_FILES['files']['tmp_name'];
$bomba = $_FILES['files']['name']; 
 
 $archivia = new ZipArchive(); 
$nome_file = time().".zip"; 
$archivia->open($nome_file, ZIPARCHIVE::CREATE);  

foreach ($bomba as $estenzione) {
$n= 0;


$info = pathinfo($estenzione); 
 $estenzion[$n] = $info['extension'];
 echo $estenzion[$n] ;

$estenzion ++ ;
}

 
foreach ($lista as $nome) {

   $file = ($nome);

   /*operazioni di upload*/

    $primonumeronome = rand(1,9);
	$secondonumeronome = rand(1111,9999);
	$terzonumeronome = rand(1, 111);
	$quartonumeronome = rand (1, 11112);
	$nomefile = $primonumeronome ."". $secondonumeronome ."". $terzonumeronome ."". $quartonumeronome;
   
   echo $file;
   $n = 0;
   move_uploaded_file($file, $nomefile.".".$estenzion[$n]);
      
   $archivia->addFile($nomefile.".".$estenzion[$n]);
   $n ++;

//PROVO A ESTRAPOLARE L'ESTEZIONE



   
  }

   echo "Sono stati zippati: " . $archivia->numFiles . " file.\n"; 
$archivia->close(); 
move_uploaded_file($nome_file, time().".zip");

 ?>


<form id="" action="" method="post" enctype='multipart/form-data'>
<input id="file" name="files[]" type="file" multiple="multiple">
<input type="submit" value="carica">
</form>
</body>
</body>
</html>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 22 Mag 2013
  • #28
ciao
sembrerebbe che finalmente tu sia riuscito.
c'è un però, così ad una prima occhiata ho un dubbio, ma può essere che sbagli.
prova ad archiviare tre file con estenzioni diverse es imm_1.jpg, imm_2.png e imm_3.gif
poi guarda nello zip cosa trovi
 
Ultima modifica: 22 Mag 2013
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 23 Mag 2013
  • #29
cavolo hai ragione come posso risolvere?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 23 Mag 2013
  • #30
ciao
secondo me devi correggere i due foreach, da
PHP:
<?php
//.....
foreach ($bomba as $estenzione) {
	$n= 0;//1° giro $n==0, 2° giro $n torna ==0, ecc...
	$info = pathinfo($estenzione); 
	$estenzion[$n] = $info['extension'];//1°giro $estenzion[0], 2° giro rimane $estenzion[0]
	echo $estenzion[$n] ;
	//forse qui intendevi $n++ ?
	$n++;//1° giro se era $n==0 ->$n==1, 2° giro se era $n==0 ->$n==1,ecc...
}
//.....
?>
portando fuori la variabile di incremento, a
PHP:
<?php
//.....
$n=0;
foreach ($bomba as $estenzione) {
	//1° giro $n==0, 2° giro $n==1, ecc...
	$info = pathinfo($estenzione); 
	$estenzion[$n] = $info['extension'];//1°giro $estenzion[0], 2° giro $estenzion[1],ecc...
	echo $estenzion[$n] ;
	//forse qui intendevi $n++ ?
	$n++;//1° giro se era $n==0 ->$n==1, 2° giro se era $n==1 ->$n==2,ecc...
}
//.....
?>
ne ho scritto solo uno, ma l'altro è la stessa cosa
poi se vuoi ritrovarti solo con lo zip e non i file non zippati
PHP:
<?php
//......
	move_uploaded_file($file, $nomefile.".".$estenzion[$n]);
	$archivia->addFile($nomefile.".".$estenzion[$n]);
	unset($nomefile.".".$estenzion[$n]);
	$n ++;
	//PROVO A ESTRAPOLARE L'ESTEZIONE
}
//...........
?>
altro dubbio.
dato che ti fai caricare i file io valuterei la possibilità di caricare solo certi tipi di file (doc,txt,pdf,jpg,png,gif) perche, anche se zippato, non è mai sicuro avere un bel file .exe o altra estenzione eseguibile
prima di fare tutto lo zippaggio
PHP:
<?php
$lista = $_FILES['files']['tmp_name'];
$bomba = $_FILES['files']['name'];
$ammessi=array('doc','txt','pdf','jpg','png','gif');//e altri che ti interessano
foreach($bomba as $ch => $val){
	$est = pathinfo($val);
	 if(!in_array($est,$ammessi)){
	 	unset($lista['files']['tmp_name'][$ch]);//elimino i file non ammessi
		unset($bomba['files']['name'][$ch]);
	 }
}
if(!is_array($bomba){//tutti i file non ammessi
	exit();//e rinnvio al form pulito
}
//....
?>
prova e sappimi dire
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 23 Mag 2013
  • #31
scusa sono preso un po dall agitazione e non mi sta riuscendo riassemblare il codice mi puoi mandare lo script finito? ti prego
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 23 Mag 2013
  • #32
Cosi funziona!!
GRAZIE MILLE MA cè un errore quando elimina i file mi dice che cè un carattere inaspettato e quindi lo commentato per adesso.
Dove inserisco lo script per controllare il file?
Ti ringrazio tanto tanto!

PHP:
<?php

$lista = $_FILES['files']['tmp_name'];
$bomba = $_FILES['files']['name']; 
 
 $archivia = new ZipArchive(); 
$nome_file = time().".zip"; 
$archivia->open($nome_file, ZIPARCHIVE::CREATE);  

//PRIMO PASSAGGIO
$n=0; 
foreach ($bomba as $estenzione) { 
    //1° giro $n==0, 2° giro $n==1, ecc... 
    $info = pathinfo($estenzione);  
    $estenzion[$n] = $info['extension'];//1°giro $estenzion[0], 2° giro $estenzion[1],ecc... 
    echo $estenzion[$n] ; 
    //forse qui intendevi $n++ ? 
    $n++;//1° giro se era $n==0 ->$n==1, 2° giro se era $n==1 ->$n==2,ecc... 
} 

 $n=0;
foreach ($lista as $nome) {

   $file = ($nome);

   /*operazioni di upload*/

    $primonumeronome = rand(1,9);
	$secondonumeronome = rand(1111,9999);
	$terzonumeronome = rand(1, 111);
	$quartonumeronome = rand (1, 11112);
	$nomefile = $primonumeronome ."". $secondonumeronome ."". $terzonumeronome ."". $quartonumeronome;
   
   echo $file;
   
   
   
   move_uploaded_file($file, $nomefile.".".$estenzion[$n]); 
    $archivia->addFile($nomefile.".".$estenzion[$n]); 
    //unset($nomefile.".".$estenzion[$n]); 
    $n ++; 
    
} 



   echo "Sono stati zippati: " . $archivia->numFiles . " file.\n"; 
$archivia->close(); 
move_uploaded_file($nome_file, time().".zip");

 
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 23 Mag 2013
  • #33
ciao
con anche l'eliminazione dei file originali e il controllo del tipo di file?
comunque abbi pazienza, penso per stasera
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 23 Mag 2013
  • #34
inoltre non mi sposta il file dove gli dico io
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 23 Mag 2013
  • #35
ciao
prova a vedere se funzia, come detto ho dei problemi con la classe zip
PHP:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>
<body>
<?php
if(isset($_POST['carica'])){//altrimenti come fa a sapere php che hai dato il submit?
	$lista = $_FILES['files']['tmp_name'];
	$bomba = $_FILES['files']['name']; 
	//qui il controllo del tipo di file ammessi
	$ammessi=array('doc','txt','pdf','jpg','png','gif');//e altri che ti interessano
	foreach($bomba as $ch => $val){
		$est = pathinfo($val);
	 	if(!in_array($est,$ammessi)){
	 		unset($lista['files']['tmp_name'][$ch]);//elimino i file non ammessi
			unset($bomba['files']['name'][$ch]);
	 	}
	}
	if(!is_array($bomba){//tutti i file erano non ammessi
		//dai un avviso e ritorni al form pulito o dove vuoi tu
		//io metto al form pulito, con un ritorno dopo 3 secondi
		echo "tutti i file eliminati<br />";
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		exit();//e rinnvio al form pulito
	}
	$archivia = new ZipArchive(); 
	$nome_file = time().".zip"; 
	$archivia->open($nome_file, ZIPARCHIVE::CREATE);  
	$n= 0;
	foreach ($bomba as $estenzione) {
		$info = pathinfo($estenzione); 
		$estenzion[$n] = $info['extension'];
		echo $estenzion[$n],"<br />" ;
		$n ++ ;
	}
	$n = 0;
	foreach ($lista as $nome) {
		$file = ($nome);
		/*operazioni di upload*/
		$primonumeronome = rand(1,9);
		$secondonumeronome = rand(1111,9999);
		$terzonumeronome = rand(1, 111);
		$quartonumeronome = rand (1, 11112);
		$nomefile = $primonumeronome ."". $secondonumeronome ."". $terzonumeronome ."". $quartonumeronome;
		echo $file;
		move_uploaded_file($file, $nomefile.".".$estenzion[$n]);
		$archivia->addFile($nomefile.".".$estenzion[$n]);
		//qui se vuoi eliminare i file originali, altrimenti la togli o la commenti
		unset($nomefile.".".$estenzion[$n]);
		$n ++;
		//PROVO A ESTRAPOLARE L'ESTEZIONE
	}
	echo "Sono stati zippati: " . $archivia->numFiles . " file.\n"; 
	$archivia->close(); 
	move_uploaded_file($nome_file, time().".zip");
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}else{
?>
<!-- ti conviene mettere l'avviso -->
tipo file ammessi: .doc, .txt, .pdf, .jpg, .png, .gif<br />
i file non ammessi verranno eliminati<br />
<form id="" action="<?php htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" enctype='multipart/form-data'>
<input id="file" name="files[]" type="file" multiple="multiple">
<input type="submit" name="carica" value="carica">
</form>
<!-- link per uscire -->
<?php
}
?>
</body>
</html>
poi mi sai dire
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 23 Mag 2013
  • #36
ciao
prova a fare queste correzzione ettendo degli echo (o dei var_dump) per verificare che i vari nomi siano sorretti
PHP:
<?php
//......
		$nomefile = $primonumeronome ."". $secondonumeronome ."". $terzonumeronome ."". $quartonumeronome;
		echo $file;
		move_uploaded_file($file, $nomefile.".".$estenzion[$n]);
		$archivia->addFile($nomefile.".".$estenzion[$n]);
		//qui se vuoi eliminare i file originali, altrimenti la togli o la commenti
		unset($nomefile.".".$estenzion[$n]);
		$n ++;
//.......

?>
correggi in
PHP:
<?php
//......
		$nomefile = $primonumeronome .$secondonumeronome .$terzonumeronome .$quartonumeronome.".".$estenzion[$n];
		echo "sposto $file con nome $nomefile<br />";//così vedi meglio poi puoi anche toglierla
		move_uploaded_file($file, $nomefile);
		$archivia->addFile($nomefile);
		//qui se vuoi eliminare i file originali, altrimenti la togli o la commenti
		unset($nomefile);
		$n ++;
//.......
	$archivia->close();
	$dove_spostare="cartella/";
	$nuovo_nome_zip=$dove_spostare.time().".zip";
	echo "spsosto $nome_file con nome $nome_file<br />";
    move_uploaded_file($nome_file, $nome_file);
//......
?>
 
S

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
  • 24 Mag 2013
  • #37
per spostare il file zip lo devi spostare al momento della sua creazione
PHP:
   $archivia->open("PERCORSOFILE/".$nome_file, ZIPARCHIVE::CREATE);
 
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
Devi accedere o registrarti per poter rispondere.

Discussioni simili

S
Form invio mail html, con invio tramite file denominato invio.php
  • Simone Menegoni
  • 7 Ago 2015
  • PHP
Risposte
8
Visite
5K
PHP 14 Ago 2015
Simone Menegoni
S
invio dati da form a file xml
  • asevenx
  • 27 Mar 2014
  • XML
Risposte
0
Visite
2K
XML 27 Mar 2014
asevenx
P
ASP form invio dati + file per email
  • peogroup
  • 23 Lug 2009
  • Classic ASP
Risposte
4
Visite
7K
Classic ASP 27 Lug 2009
peogroup
P
G
Aiuto per creare un form di invio file
  • Galiant
  • 12 Nov 2008
  • Classic ASP
Risposte
3
Visite
3K
Classic ASP 13 Nov 2008
lukeonweb
invio file video con form php
  • SolidSnake4
  • 13 Ago 2008
  • PHP
Risposte
8
Visite
4K
PHP 14 Ago 2008
SolidSnake4
T
Invio mail da form contatti con annesso file attachment
  • traverso
  • 3 Gen 2008
  • Classic ASP
Risposte
1
Visite
3K
Classic ASP 4 Gen 2008
PoLe
Invio file da form
  • pugia
  • 23 Gen 2004
  • HTML e CSS
Risposte
3
Visite
2K
HTML e CSS 30 Gen 2004
pugia
K
[php]form invio dati
  • Kiko74b
  • 7 Nov 2022
  • PHP
Risposte
0
Visite
1K
PHP 7 Nov 2022
Kiko74b
K
G
form invio multiplo con checkbox
  • giacomo9783
  • 29 Ott 2022
  • PHP
Risposte
12
Visite
3K
PHP 1 Nov 2022
marino51
Intercettare form solo dopo invio
  • nivaria.achinet
  • 29 Apr 2022
  • Javascript
Risposte
1
Visite
1K
Javascript 30 Apr 2022
otto9due
M
Unire 2 funzioni per l'invio di un form e con l'apertura di un div
  • maxnegri2036
  • 11 Dic 2021
  • Javascript
Risposte
0
Visite
2K
Javascript 11 Dic 2021
maxnegri2036
M
M
Form: come tornare ai campi già compilati dopo invio
  • Marcello_php
  • 16 Ago 2021
  • PHP
Risposte
1
Visite
1K
PHP 17 Ago 2021
zorro
G
Invio form con PHP
  • Giulia2021
  • 24 Lug 2021
  • PHP
Risposte
3
Visite
2K
PHP 17 Ago 2021
bubino8
S
Invio email da form
  • stevc79
  • 12 Mag 2020
  • PHP
Risposte
8
Visite
2K
PHP 13 Mag 2020
stevc79
S
U
PHP bottone per invio mail o ritorno al form
  • uffre
  • 3 Nov 2019
  • PHP
Risposte
15
Visite
10K
PHP 7 Nov 2019
uffre
U
A
[PHP] Invio automatico dati da form
  • Alex@1983
  • 11 Mag 2019
  • PHP
Risposte
6
Visite
2K
PHP 13 Mag 2019
Alex@1983
A
B
[PHP] Invio mail automatico dopo compilazione form - db
  • Borghese
  • 3 Feb 2019
  • PHP
  • 2
Risposte
25
Visite
8K
PHP 12 Feb 2019
Borghese
B
[PHP] Preservare i campi del form solo se l'invio non ha successo
  • Cosina
  • 31 Dic 2018
  • PHP
Risposte
5
Visite
2K
PHP 17 Gen 2019
macus_adi
R
[javascript]Form invio preventivo
  • rhew90
  • 3 Mag 2018
  • Javascript
Risposte
0
Visite
2K
Javascript 3 Mag 2018
rhew90
R
[PHP] Invio mail da form dubbio
  • paloppa
  • 1 Mar 2018
  • PHP
Risposte
17
Visite
3K
PHP 1 Mar 2018
marino51
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?