login  Naam:   Wachtwoord: 
Registreer je!
 Forum

unzip mappen vermijden/ traag upload

Offline ZG1988 - 20/08/2006 23:38
Avatar van ZG1988Gouden medaille

überleet
  1. <?php
  2. function unpackZip($dir,$file) {
  3. if ($zip = zip_open($dir.$file.".zip")) {
  4. if ($zip) {
  5. $i = 0;
  6. while ($zip_entry = zip_read($zip)) {
  7. $ext = explode(".",zip_entry_name($zip_entry));
  8. if( $ext[1] != "jpg" && $ext[1] != "JPG" && $ext[1] == "" ){
  9. $error[] = zip_entry_name($zip_entry);
  10. }
  11. else{
  12. if (zip_entry_open($zip,$zip_entry,"r")) {
  13. $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
  14. $dir_name = dirname(zip_entry_name($zip_entry));
  15. if ($dir_name != ".") {
  16. $dir_op = $dir."/";
  17. foreach ( explode("/",$dir_name) as $k) {
  18. $dir_op = $dir_op . $k;
  19. if (is_file($dir_op)) unlink($dir_op);
  20. if (!is_dir($dir_op)) mkdir($dir_op);
  21. $dir_op = $dir_op . "/" ;
  22. }
  23. }
  24. $fp=fopen($dir."/".zip_entry_name($zip_entry),"w");
  25. fwrite($fp,$buf);
  26. zip_entry_close($zip_entry);
  27. } else
  28. return false;
  29. }
  30. }
  31. zip_close($zip);
  32. }
  33. }else
  34. return "Er is iets fout gegaan";
  35.  
  36. return $error;
  37.  
  38. }


1. ik heb bovenstaande code om een zipbestand te unpakken op mijn server. enkel wanneer men een map zipt ipv bestanden gaat men hele site overhoop, dit wil ik dus vermijden. iemand een idee hoe ik dat kan nakijken ?


2. als ik een zipbestandje van nog geen 400kb wil uploaden duurd dit al enorm lang, iemand een idee hoe dit zou komen of hoe ik het sneller zou doen ?

4 antwoorden

Gesponsorde links
Offline Wim - 21/08/2006 00:05
Avatar van Wim Crew algemeen 1. if(is_dir()) vanaf het ge-extract is...
2. zou je je html form ook willen posten aub?

opm:
  1. if ($zip = zip_open($dir.$file.".zip")) {
  2. if ($zip) {


if($zip = zip_open(...)) {
if($zip) {

}
}

2de if is overbodig
Offline ZG1988 - 21/08/2006 00:21 (laatste wijziging 21/08/2006 17:57)
Avatar van ZG1988 Gouden medaille

überleet
  1. <?php
  2. if( $_FILES['zip']['name'] != ""){
  3.  
  4. $error = array();
  5. $naam = explode(".", $_FILES['zip']['name']);
  6.  
  7. if( $naam[1] != "zip"){
  8. $error[] = 'Dit is geen zipbestand, enkel zipbestanden kunnen worde geupload';
  9. }
  10.  
  11. $fouten = sizeof($error); // aantal errors tellen
  12. if( $fouten > 0 ){
  13. echo 'U afbeelding kon niet worden geupload om volgende reden(en):';
  14. echo '<ul>';
  15. for($y = 0; $y < $fouten; $y++) {
  16. echo '<li>'.$error[$y].'</li>';
  17. }
  18. echo '</ul>';
  19. echo '<a href="Javascript: history.go(-1);"</a> Ga terug naar formulier</a>';
  20.  
  21. }
  22. else{
  23.  
  24. $album_path = "../" . $standard_foto_path . "/" . $_POST['ver_album'] . "/";
  25. $zip_path = $album_path . $_FILES['zip']['name'];
  26.  
  27. copy($_FILES['zip']['tmp_name'], $zip_path);
  28.  
  29. chmod($zip_path, 0777);
  30.  
  31. $zip_naam = $naam[0];
  32.  
  33. $error = unpackZip($album_path, $zip_naam);
  34.  
  35. $fouten = sizeof($error); // aantal errors tellen
  36.  
  37. if( $fouten > 0 ){
  38. echo 'Volgende bestanden konden niet worden geupload';
  39. echo '<ul>';
  40. for($y = 0; $y < $fouten; $y++) {
  41. echo '<li>'.$error[$y].'</li>';
  42. }
  43. echo '</ul>';
  44. echo '<a href="Javascript: history.go(-1);"</a> Ga terug naar formulier</a>';
  45. }
  46.  
  47. unlink($zip_path);
  48.  
  49.  
  50.  
  51. //update foto gegevens
  52. updatefoto("/" . $standard_foto_path . "/" . $_POST['ver_album'], tijdstip());
  53.  
  54.  
  55.  
  56. $url = ""; // target of the redirect
  57. $delay = "20"; // 3 second delay
  58. echo '<meta http-equiv="refresh" content="'.$delay.';url='.$url.'">';
  59.  
  60. }
  61.  
  62.  
  63.  
  64.  
  65.  
  66. }
  67. elseif( $files != NULL && $_GET['zip'] == '1'){
  68.  
  69. ?>
  70. <form action="" method="post" name="upload" ENCTYPE="multipart/form-data">
  71.  
  72. <table width="300" align="center">
  73. <tr>
  74. <td class="overzicht_td" align='right'>
  75. Zip
  76. </td>
  77. <td align='left' >
  78. <input type="file" name="zip" class="textvak"><br />
  79. </td>
  80. </tr>
  81. <tr>
  82. <td class='overzicht_td' align='right'>
  83. Foto's toevoegen in:
  84. </td>
  85. <td align='left'>
  86.  
  87. <?php
  88. // overzicht albums weergeven
  89. echo "<select name='ver_album' class='textvak' style='width: 150; padding-left: 5px;'></div>";
  90.  
  91. // album waarde
  92. $path = $path . "/";
  93. rsort($files);
  94.  
  95. $i = 0;
  96. while( $files[$i] != NULL ){
  97.  
  98. // Gegevens ophalen
  99. $album_titel = "";
  100. include($path . $files[$i] . "/album_gegevens.php");
  101.  
  102. echo "<option value='" . $files[$i] . "'";
  103.  
  104. if( $files[$i] == $_GET['album'] ){
  105. echo " selected ";
  106. }
  107.  
  108. echo "> " . $album_titel . "</option>";
  109.  
  110.  
  111.  
  112. $i++;
  113. }
  114. echo "</select>";
  115. ?>
  116. </td>
  117. </tr>
  118. <tr>
  119. <td align='right' colspan='2'><br /><br />
  120. <input type="submit" name="Submitzip" value="Voeg zipfile toe" class="submitknop">
  121. </td>
  122. </tr>
  123. </table>
  124. </form>
  125.  
  126.  
  127. <?php
  128.  
  129. }
  130.  
  131. else{
  132.  
  133. echo " U heeft nog geen fotoalbum aangemaakt. <br />maak eerst een fotoalbum aan voor u een foto toevoegt";
  134.  
  135. }
  136. ?>


heb een stuk code weggelate, want er was nog een gedeelte voor een gewone foto uploaden ook. maar dit is in een elseif functie dus ni relevant.


ik heb nu een probleem dat inneens opduikt,

Citaat:
Warning: chmod(): No such file or directory in /home/frent/domains/frent.be/public_html/Amerika/Admin/functies/pagina/fotoalbum/foto_toevoegen.php on line 31

Warning: zip_open() Cannot open zip archive ../standard_pages/fotoalbum_images/frederik/foto_album_1/fotos.zip in /home/frent/domains/frent.be/public_html/Amerika/Admin/functies/unzip.php on line 3
Volgende bestanden konden niet worden geupload
E
Ga terug naar formulier
Warning: unlink(../standard_pages/fotoalbum_images/frederik/foto_album_1/fotos.zip): No such file or directory in /home/frent/domains/frent.be/public_html/Amerika/Admin/functies/pagina/fotoalbum/foto_toevoegen.php on line 49


hij wilt niet kopieren, hoe komt dit ?

  1. <?php
  2. function unpackZip($dir,$file) {
  3. if ($zip = zip_open($dir.$file.".zip")) {
  4. while ($zip_entry = zip_read($zip)) {
  5. $ext = explode(".",zip_entry_name($zip_entry));
  6. if( $ext[1] != "jpg" && $ext[1] != "JPG" ){
  7. $error[] = zip_entry_name($zip_entry);
  8. }
  9. else{
  10. if (zip_entry_open($zip,$zip_entry,"r")) {
  11. $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
  12. $dir_name = dirname(zip_entry_name($zip_entry));
  13.  
  14. if($dir_name != NULL && $dir_name != "."){
  15. $error[] = $dir_name . " is een map";
  16. }else{
  17. $fp=fopen($dir."/".zip_entry_name($zip_entry),"w");
  18. fwrite($fp,$buf);
  19. }
  20. zip_entry_close($zip_entry);
  21. } else
  22. return false;
  23. }
  24. }
  25. zip_close($zip);
  26. }else
  27. return "Er is iets fout gegaan";
  28.  
  29. return $error;
  30.  
  31. }


De oplossing.
Offline Wim - 21/08/2006 19:21
Avatar van Wim Crew algemeen probeer van je $absolute_path eens een 'vast' path te maken; bv:
/home/zg1988/public_html/zip/file1.zip ipv met ../ te werken...
Offline ZG1988 - 21/08/2006 21:29
Avatar van ZG1988 Gouden medaille

überleet
nee dat is het zeker niet.

het rare is dat ik wel kleine zip bestandjes kan unpakken, maar bv. 50 foto's lukt niet. zou het kunnen dat men server het niet aankan ofzo ?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.26s