Form invio file multipli

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
ciao a tutti, io ho un form con l'invio multiplo di file.
Ma se io questi file li volessi prendere farli diventare in un formato zip e spostarli insieme come dovrei fare?
 
Grazie dell aiuto, ma io ho piu file in un solo input
come posso modificare lo script?
PHP:
<?php
$archivia = new ZipArchive();
$nome_file = "archivio2.zip";

if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE) 
{
  @exit("Impossibile aprire <$nome_file>\n");
}

$archivia->addFromString("file1.txt", 
"Testo del primo file zippato\n");

$archivia->addFromString("file2.txt", 
"Testo del secondo file zippato\n");

$archivia->addFile("file3.txt");

echo "Sono stati zippati: " . $archivia->numFiles . " file.\n";
$archivia->close();

?>
 
ciao
prova così e vedi se funzia
PHP:
<?php
$archivia = new ZipArchive();
$nome_file = "archivio2.zip";

if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE) 
{
  @exit("Impossibile aprire <$nome_file>\n");
}
$nome=array('file1.txt','file2.txt','file3.txt');//questo evidentemente proverra ad un $_FILE[allegato][name]
$conta=count($nome)-1;
foreach($nome as $num => $file){
	if($num<$conta){
		$archivia->addFromString($file, "Testo del $num file zippato\n");
	}else{
		$archivia->addFile($file);
	}
}
echo "Sono stati zippati: " . $archivia->numFiles . " file.\n";
$archivia->close();
?>
 
Ultima modifica:
ed all'ultimo per spostare il file zip dove voglio come posso fare? ti rignrazio moltissimo per l' aiuto che mi stai dando
 
ciao
con move_upload
comunque devo pensarci un po', perchè se non erro tu vuoi zippare i file che ti inviano gli utenti con un form, giusto?
 
Io ho creato questo script, non sarà ottimo ma credo che può andare che ne dici?

PHP:
$archivia = new ZipArchive(); 
$nome_file = time().".zip"; 

if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE)  
{ 
  @exit("Impossibile aprire <$nome_file>\n"); 
} 

$archivia->addFile($file[0]); 
if ($file[1] != "") {
	$archivia->addFile($file[1]);
}
if ($file[2] != "") {
	$archivia->addFile($file[2]);
}

if ($file[3] != "") {
	$archivia->addFile($file[3]);
}

if ($file[4] != "") {
	$archivia->addFile($file[4]);
}

if ($file[5] != "") {
	$archivia->addFile($file[5]);
}

if ($file[6] != "") {
	$archivia->addFile($file[6]);
}
echo "Sono stati zippati: " . $archivia->numFiles . " file.\n"; 
$archivia->close();
 
ciao
potresti provare così senza preuccuparti di quanti file hai
PHP:
<?php
//....
if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE){ 
  exit("Impossibile aprire <$nome_file>\n"); 
}
foreach($file as $ch => $val){
	if($val !=""){
		$archivia->addFile($val);
	}
}
echo "Sono stati zippati: " . $archivia->numFiles . " file.\n"; 
$archivia->close();
//.....
?>
provalo al massimo non funzia

dimenticavo
evita di usare il silent, gli errori vanno eliminati non nascosti
 
Ultima modifica:
ed infine per spostarlo come potrei fare xk non funge io ho provato cosi

PHP:
move_uploaded_file($NOme,$pathAndName . $NOme );

ed sicuramente ho sbagliato qualcosa perchè non mi funge
 
ciao
la sintassi è giusta, verifica i percorsi e se il file esiste
ciao
fai cosi per vedere meglio dove si inceppa
PHP:
<?php
//...
if(file_exists($NOme)){
	if(move_uploaded_file($NOme,$pathAndName . $NOme )){
		echo "file trasferito";
	}else{
		echo "file NON trasferito";
	}
}else{
	echo "file non trovato";
}
//....
?>

stupidaggine: in $pathAndName hai messo la slesh / ?
 
si lo messa, aspetta,
Io vorrei ricreare da nuovo il mio script:
ho questo input:
PHP:
  <input required="required" id="file_upload" name="file_upload" type="file" multiple">
e ho questo script per spostare i file
PHP:
$folder='../uploads/';

if(isset($_FILES['file_upload']['name'])){

    $count=0;
    foreach ($_FILES['file_upload']['name'] as $filename) {
        $destination=$folder;
        $origin=$_FILES['file_upload']['tmp_name'][$count];
        $count++;
        $destination=$destination.time();
        move_uploaded_file($origin, $destination);
        	
    }
}

come posso fare ora a creare questo maledetto file zip?
e io ho il mio hosting in aruba e non so da dove impostare questa libreria =) aiutami ti prego
 
ciao
prima una piccola cosa:
ti conviene senza usare il $count
PHP:
<?php
//....
foreach ($_FILES['file_upload']['name'] as $chiave => $filename) {
	//...
	$origin=$_FILES['file_upload']['tmp_name'][$chiave];
	//...
}
//....
?>
poi potresti usare lo stesso foreach per fare lo zip, se vuoi salvare sia i varifile che lo zip dei file fai due move, altrimenti fai un move solo.
per aruba: in teoria la libreria dovrebbe essere già in php (dipende dalla versione), la cosa migliore è fare un ticket
 
PHP:
$archivia = new ZipArchive();
$nome_file = time().".zip";

if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE) 
{
  @exit("Impossibile aprire <$nome_file>\n");
}


$lista = $_FILES['files']['name'];
 
foreach ($lista as $nome_immagine) {
   $file = basename($nome_immagine);
   /*operazioni di upload*/
echo $file;
$archivia->addFile("$file");

}
echo "Sono stati zippati: " . $archivia->numFiles . " file.\n";
$archivia->close();

move_uploaded_file($nome_file,"../provainviomultiplo/")
?>

ma il file non viene spostasto cavolo!
 
ciao
prova questo, così dovresti per prima cosa verificare i dati del file zip
PHP:
<?php
$archivia = new ZipArchive();
$nome_file = time().".zip";
if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE) 
{
  @exit("Impossibile aprire <$nome_file>\n");
}
$lista = $_FILES['files']['name'];
foreach ($lista as $nome_immagine) {
   $file = basename($nome_immagine);
   /*operazioni di upload*/
	echo $file;
	$archivia->addFile($file);
}
//prova a mettere questa per vedere le info del file zip
$info = pathinfo($nome_file);
echo "cartella ".$info['dirname'], "\n";
echo "nome completo ".$info['basename'], "\n";
echo "estenzione ".$info['extension'], "\n";
echo "nome del file ".$info['filename'], "\n";
//così verifichi se il file si è formato e dove è
echo "Sono stati zippati: " . $archivia->numFiles . " file.\n";
$archivia->close();
//move_uploaded_file($nome_file,"../provainviomultiplo/$nome_file");
?>
sappimi dire
 
mi restituisce tutto, ma non mi sposta il file.

HTML:
1000spider.xlsxcartella . nome completo 1369211108.zip estenzione zip nome del file 1369211108 Sono stati zippati: 1 file.

ho provato anche a muoverlo nella stessa cartella per non sbagliare

move_uploaded_file($nome_file, $nome_file)
 
mi dice questo:

No such file or directory in /membri/laemmeallapi/provainviomultiplo/index.php on line 34
 

Discussioni simili