Código:
<?php $dir = "eulen"; //Change this to the correct dir RELATIVE TO WHERE THIS SCRIPT IS, or /full/path/ //MIME types to allow, Gif, jpeg, zip ::Edit this to your liking $types = array("application/pdf","image/png","image/x-png","audio/wav","image/gif","image/jpeg", "image/png", "image/pjpeg","application/x-zip-compressed","application/zip"); // Nothing to edit below here. //Function to do a directory listing //function scandir($dirstr) { // echo "<pre>\n"; // passthru("ls -l -F $dirstr 2>&1 "); // echo "</pre>\n"; //} //Check to determine if the submit button has been pressed if((isset($_POST['submit']))){ //Shorten Variables $tmp_name = $_FILES['upload']['tmp_name']; $new_name = $_FILES['upload']['name']; $path = $_POST['subdir']; $fullpath = "$dir$path/"; $fullpath = str_replace("..", "", str_replace("\.", "", str_replace("//", "/", $fullpath))); $clean_name = ereg_replace("[^a-z0-9._]", "", str_replace(" ", "_", str_replace("%20", "_", strtolower($new_name) ) ) ); // lets see if we are uploading a file or doing a dir listing if(isset($_POST['Dir'])){ echo "Directorio asignado en $fullpath\n"; scandir("$fullpath"); }else{ //Check MIME Type if ((in_array($_FILES['upload']['type'], $types)) and (!file_exists($fullpath.$clean_name))){ // create a sub-directory if required if (!is_dir($fullpath)){ mkdir("$fullpath", 0755); } //Move file from tmp dir to new location move_uploaded_file($tmp_name,$fullpath . $clean_name); $filesize = $_FILES['userfile']['size']; echo "$clean_name of {$_FILES['upload']['size']} bytes fue correctamente guardado en $fullpath"; }else{ //Print Error Message echo "<small>File <strong><em>{$_FILES['upload']['name']}</em></strong> No se pudo guardar - tipo de archivo incorrecto o ya existente</small><br/>"; //Debug $name = $_FILES['upload']['name']; $type = $_FILES['upload']['type']; $size = $_FILES['upload']['size']; $tmp = $_FILES['upload']['name']; echo "Name: $name<br />Type: $type<br />Size: $size<br />Tmp: $tmp"; } } } else { } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> <fieldset> <legend>Sube archivos</legend> <p align = "left">Elegir otro directorio por defecto <input type="checkbox" name="Dir" value="on" /><br /> Fichero a subir <input type="file" name="upload" /> <br /> Guardar en/Cambiar directorio por defecto: <input type="text" name="subdir" value="<?php $path = $_POST['subdir']; echo "$path";?>" /> (Puede estar en blanco) **El directorio será creado si no existe<br /> <input type="submit" name="submit" value="Subir fichero/cambiar carpeta" /> </fieldset> </form> </body> </html>
El caso, es que estaba intentando añadir la condición de que si un archivo era un zip, que lo descomprimiese al subirlo, pero por más que lo intento, no consigo que esa parte de la función funcione bien, el caso, me vendría bien ayuda para saber en que parte implementarla para evitar problemas.
Vendría siendo esto la parte que trabaja con el zip.
Código:
He probado varias cosas pero no consigo que me funcione ¿Qué debería hacer? <?php $zip = zip_open($_FILES['upload']['tmp_name']); while($zip_entry = zip_read($zip)) { $entry = zip_entry_open($zip,$zip_entry); $filename = zip_entry_name($zip_entry); $target_dir = $dir.substr($filename,0,strrpos($filename,'/')); $filesize = zip_entry_filesize($zip_entry); if (is_dir($target_dir) || mkdir($target_dir)) { if ($filesize > 0) { $contents = zip_entry_read($zip_entry, $filesize); file_put_contents($dir.$filename,$contents); } } } ?>