سؤال

ولدي ملف PHP وصورة في نفس الدليل. كيف يمكن أن أحصل على ملف PHP لأنها مجموعة من رؤوس الحياة السياسية في فرنسا و "سحب" صورة فيه. حتى إذا ذهبت إلى file.php أنها سوف تظهر الصورة. إذا كنت إعادة كتابة file.php إلى file_created.jpg ويحتاج للعمل.

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

المحلول

وبدلا من استخدام file_get_contents كما اقترح إجابة أخرى، استخدم <لأ href = "HTTP: // بى صافي / طلب & ReadFile "يختلط =" نوفولو noreferrer "> طلب & ReadFile والإخراج من بعض أكثر رؤوس HTTP للعب بشكل جيد:

   <?php
    $filepath= '/home/foobar/bar.gif'
    header('Content-Type: image/gif');
    header('Content-Length: ' . filesize($filepath));
    readfile($file);
   ?>

وطلب & ReadFile يقرأ البيانات من ملف ويكتب مباشرة إلى المخزن المؤقت للإخراج، في حين file_get_contents ستسحب أولا الملف بأكمله إلى الذاكرة ومن ثم إخراجه. عن طريق طلب & ReadFile يحدث فرقا كبيرا إذا كان الملف كبير جدا.

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

$filepath= '/home/foobar/bar.gif'

$mtime=filemtime($filepath);

$headers = apache_request_headers(); 
if (isset($headers['If-Modified-Since']) && 
    (strtotime($headers['If-Modified-Since']) >= $mtime)) 
{
    // Client's cache IS current, so we just respond '304 Not Modified'.
    header('Last-Modified: '.gmdate('D, d M Y H:i:s', $mtime).' GMT', true, 304);
    exit;
}


header('Content-Type:image/gif');
header('Content-Length: '.filesize($filepath));
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $mtime).' GMT');
readfile($filepath);

نصائح أخرى

وينبغي أن يكون من السهل على النحو التالي:

<?php
    $filepath= '/home/foobar/bar.jpg';
    header('Content-Type: image/jpeg');
    echo file_get_contents($filepath);
?>

وسيكون لديك فقط لمعرفة كيفية تحديد نوع التمثيل الصامت الصحيح، الذي يجب أن يكون تافهة جدا.

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