كيفية ضغط ملف الصورة واستخراجه باستخدام PHP؟الكود الخاص بي ينتج عنه استخراج فاسد

StackOverflow https://stackoverflow.com/questions/3202303

  •  13-09-2020
  •  | 
  •  

سؤال

لدي نموذج يمكن للمستخدم من خلاله تحميل ملف بحجم 100 ميجابايت مما يؤدي إلى تأخير في التحميل، ومن ثم قررت أولاً ضغط الصورة في نموذج الإرسال ثم تحميلها على الخادم ثم استخراجها على الخادم.بحيث تقل عملية التحميل، ولذلك استخدمت سكربت وهو كما يلي:

<?php
$zip = new ZipArchive();
$filename = "newzip.zip";

if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
   exit("cannot open <$filename>\n");
}
$zip->addFromString("myfile.jpeg", 
"This is the first file in our ZIP, added as 
firstfile.txt.\n");

echo "numfiles: " . $zip->numFiles . "\n";
$zip->close();

$zip1 = zip_open("newzip.zip");
if ($zip1) {
  while ($zip_entry = zip_read($zip1)) {
    $fp = fopen(zip_entry_name($zip_entry), "w");
    if (zip_entry_open($zip1, $zip_entry, "r")) {
      $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
      fwrite($fp,"$buf");
      zip_entry_close($zip_entry);
      fclose($fp);
    }
  }
  zip_close($zip1);
  unlink("newzip.zip");
}
?>

الآن هنا من الكود أعلاه أحصل على الصورة المستخرجة، ولكن بعد الاستخراج يتم تقليل حجم الصورة إلى 61 بايت وهي تالفة، أي.لا يمكن مشاهدته.

ما الخطأ في هذا الرمز من فضلك أرشدني

هل كانت مفيدة؟

المحلول

أعتقد أنك مربكة جانب العميل وخادم الجانب هنا.لا يمكنك ببساطة إنشاء عملية تشغيل مضغوط، حيث يتم تنفيذ البرنامج النصي PHP على جانب الخادم.لذلك عليك إما أن تقوم بتوجيه تعليمات المستخدمين إلى ZIP الملفات قبل إرسالها، أو استخدم IE.تطبيق java لزود الملف الخاص بهم قبل التحميل.

نصائح أخرى

$zip->addFromString("myfile.jpeg", 
"This is the first file in our ZIP, added as 
firstfile.txt.\n");

ربما أردت بدلاً من ذلك:

$zip->addFromString("firstfile.txt", 
"This is the first file in our ZIP, added as 
firstfile.txt.\n");

الملف الذي يبلغ حجمه 61 بايت الذي تحصل عليه هو الملف الذي أضفته في المقام الأول!

echo strlen("This is the first file in our ZIP, added as 
firstfile.txt.\n");

يعطي 61.

يرجى التحقق من البرنامج النصي أدناه الذي سيقوم فقط باستخراج الصور من ملف zip واستبعاد جميع الملفات الأخرى.مثل طرق يمكنك إضافة جميع أنواع MIME الأخرى.

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top