كيفية الحصول على حجم ملف من ملف بعيد من GoogleCode مع حليقة؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

أحاول الحصول على حجم ملف من ملف بعيد "compiler-latest.zip" (googlecode.com) باستخدام حليقة دون تنزيله فعليا، إليك رمز PHP الخاص بي:

$url = 'http://closure-compiler.googlecode.com/files/compiler-latest.zip';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // optional
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // optional
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // optional
$result = curl_exec($ch);
$filesize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
print 'Filesize: ' . $filesize . '<br><br>';
print_r($result);

ولكن، أحصل على "HTTP / 1.1 404 غير موجود" مع حجم ملف (1379 بايت) من هذا المستند 404. لذلك، إذا قمت بتعيين (curlopt_nobody، 0) يقوم بتنزيل الملف وإرجاع حجم الملف الصحيح (حاليا 3820320 بايت). سؤالي هو كيفية الحصول على حجم ملف صحيح من ملف "compiler-latest.zip" دون تنزيله؟

هام: يعمل هذا الرمز كما هو متوقع مع أي عنوان URL آخر خارج GoogleCode.com.

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

المحلول

يستخدم get_headers. وظيفة:

<?php

$headers = get_headers('http://closure-compiler.googlecode.com/files/compiler-latest.zip');

$content_length = -1;

foreach ($headers as $h)
{
    preg_match('/Content-Length: (\d+)/', $h, $m);
    if (isset($m[1]))
    {
        $content_length = (int)$m[1];
        break;
    }
}

echo $content_length;

نصائح أخرى

وكيفية الحصول على حجم الملف، عند مفقود المحتوى مفقود؟

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