عند نقل الملفات باستخدام برامج PHP النصية لأغراض أمنية، المسار المطلق للملفات القابلة للتنزيل في كثير من الأحيان يجب أن تكون مخفية. ومع ذلك، قد لا تدعم البرامج النصية التقليدية لنقل ملفات PHP التنزيلات القابلة للاستئناف، مما يسبب إزعاجًا للمستخدمين النهائيين الذين يواجهون انقطاعات في الاتصال.
لتمكين التنزيلات القابلة للاستئناف، يمكن اتباع الخطوات التالية: مأخوذة:
فيما يلي نموذج لتطبيق هذه المبادئ في PHP:
$filesize = filesize($file); $offset = 0; $length = $filesize; if (isset($_SERVER['HTTP_RANGE'])) { preg_match('/bytes=(\d )-(\d )?/', $_SERVER['HTTP_RANGE'], $matches); $offset = intval($matches[1]); $length = intval($matches[2]) - $offset; } $file = fopen($file, 'r'); fseek($file, $offset); $data = fread($file, $length); fclose($file); if ($offset > 0) { header('HTTP/1.1 206 Partial Content'); header('Content-Range: bytes ' . $offset . '-' . ($offset $length) . '/' . $filesize); } header('Content-Type: ' . $ctype); header('Content-Length: ' . $filesize); header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Accept-Ranges: bytes'); print($data);
يقوم هذا البرنامج النصي أولاً بالتحقق مما إذا كان قد تم تقديم طلب محتوى جزئي. إذا كان الأمر كذلك، فإنه يوزع النطاق من رأس النطاق، ويسعى إلى الإزاحة المناسبة في الملف، ويرسل نطاق البايت المطلوب. يقوم البرنامج النصي أيضًا بتعيين رأس Accept-Ranges على البايتات ويرسل رمز حالة HTTP المناسب للمحتوى الجزئي إذا لزم الأمر.
من خلال تنفيذ هذه التدابير، يمكن دعم التنزيلات القابلة للاستئناف باستخدام البرامج النصية لنقل ملفات PHP، مما يوفر حلاً قويًا لعمليات نقل الملفات التي يمكن استئنافها بعد الانقطاع.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3