-
@יוס
אם אתה רוצה לעשות לינק אחד שיוריד הרבה קבצים אחד אחרי השני מהשרת שלך?- אתה יכול לעשות שיקבל את הרשימת קבצים בGET וידחוס אותם על השרת עם שם זמני ואחרי הדחיסה להפנות את המשתמש לדף של הקובץ
2.אולי אתה יכול להפנות את המשתמש לכל הקבצים בזה אחר זה וזהו (לא יודע האם זה אפשרי)
- אתה יכול לעשות שיקבל את הרשימת קבצים בGET וידחוס אותם על השרת עם שם זמני ואחרי הדחיסה להפנות את המשתמש לדף של הקובץ
-
מצאתי את זה
אבל משום מה על השרת שמותקן על המחשב זה עובד
אבל על השרת הרגיל לא עובד
אולי יש משהו שצריך להתקין?<?php $valid_files = array('1.png'); if(count($valid_files > 0)){ $zip = new ZipArchive(); $zip_name = "pixels.zip"; if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){ $error .= "* Sorry ZIP creation failed at this time"; } foreach($valid_files as $file){ $zip->addFile($file); } foreach($valid_files as $file){ $zip->addFile($file); } $zip->close(); if(file_exists($zip_name)){ // force to download the zip header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header('Content-type: application/zip'); header('Content-Disposition: attachment; filename="'.$zip_name.'"'); ob_clean(); flush(); readfile($zip_name); //remove zip file from temp path unlink($zip_name); } } else { echo "No valid files to zip"; exit; }
-
@יוס
דבר ראשון הגיוני שחסר לך הרחבת PHP כלשהי.
ראית משהו בלוגים? (תמיד מקום ראשון להתחיל לבדוק בעיות..)/var/log/apache2/error.log
שנית, הייתי מציע להשתמש בספרייה כל שהיא שתאפשר לך ליצור Zip על הזכרון ולשלוח אותו למשתמש תוך כדי בלי לשמור את הקובץ לדיסק.
למשל https://github.com/maennchen/ZipStream-PHP
(ולפתוח את הzip לכתיבה ישירות לפלט של php -
fopen("php://output", "wb")
)
ייתכן שיש פתרונות טובים יותר' אני לא מתכנת PHP.. -