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?
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
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
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
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
}
//....
?>
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!
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>
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);
//......
?>