رفتن به مطلب

دریافت سایز فایل از url


پست های پیشنهاد شده

سلام

با تابع filesize() که این اختیار رو نداریم سایز یک فایل رو بدست بیاریم .

خواستم یک راهی باشه به جز ftp connect که بشه از آدرس یک فایل (site.com/file.zip) سایز یک فایل رو بدست آورد .

لینک به ارسال

منظور شما از سایز چیه در واقع منظور از فایل یعنی چی ؟

بعد این فایل که قراره مشخصش کنید تو پنل وردپرس آپلود شده ؟

لینک به ارسال

ما یک فایل zip داریم تو پنل وردپرس آپلود شده حالا باید سایزش رو دریافت کنم حالا مسیر ما هم remote هست از طریق url که تابع filesize نمیتونه این کار رو انجام بده

لینک به ارسال

اینم از تابع همین الانم تستش کردم کار میکرد


function get_file_size($ID, $digits = 2) {
$file = get_attached_file( $ID );
if (is_file($file)) {
$filePath = $file;
if (!realpath($filePath)) {
$filePath = $_SERVER["DOCUMENT_ROOT"].$filePath;
}
$fileSize = filesize($filePath);
$sizes = array("TB","GB","MB","KB","B");
$total = count($sizes);
while ($total-- && $fileSize > 1024) {
$fileSize /= 1024;
}
return round($fileSize, $digits)." ".$sizes[$total];
}
return false;
}

برای استفاده کافیه


<?php
// the number 3 shows the float number in divition
echo get_file_size( 412, 3 );
?>

لینک به ارسال

دقیقا منم دنبال همچین چیزیم اگه اشتباه نکنم قبلا آقا مرتضی یه سایت معرقفی کرده بود که همچین اسکریپی ساده تک فایلی معرفی کرده بود که میتونستید تو سایت فراخونی کنید

هرچی گشتم نمیدونم تو کدوم تاپیک ولی اگه لاتین سرچ کنید پیداش میکنید

لینک به ارسال

من کلاْ بخشی رو دارم ایجاد میکنم که سایز فایل و نام فایل و فرمت فایل وشمارنده دانلود فایل رو باید از آدرس زمینه دلخواهی که من دادم بگیره حالا خواستم به صورت فانکشن بنویسیم که من آدرس url رو دارم باید این مشخصات رو ازش بگیرم

لینک به ارسال

<?php
function getRemoteFileSize($url){
$parsed = parse_url($url);
$host = $parsed["host"];
$fp = @fsockopen($host, 80, $errno, $errstr, 20);
if(!$fp)return false;
else {
@fputs($fp, "HEAD $url HTTP/1.1\r\n");
@fputs($fp, "HOST: $host\r\n");
@fputs($fp, "Connection: close\r\n\r\n");
$headers = "";
while(!@feof($fp))$headers .= @fgets ($fp, 128);
}
@fclose ($fp);
$return = false;
$arr_headers = explode("\n", $headers);
foreach($arr_headers as $header) {
$s = "Content-Length: ";
if(substr(strtolower ($header), 0, strlen($s)) == strtolower($s)) {
$return = trim(substr($header, strlen($s)));
break;
}
}
if($return){
$size = round($return / 1024, 2);
$sz = "KB"; // Size In KB
if ($size > 1024) {
$size = round($size / 1024, 2);
$sz = "MB"; // Size in MB
}
$return = "$size $sz";
}
return $return;
}
//File size of Google Image
echo "yahoo Logo Size : <b>" . getRemoteFileSize('http://us.i1.yimg.com/us.yimg.com/i/ww/beta/y3.gif') . "</b>� (http://us.i1.yimg.com/us.yimg.com/i/ww/beta/y3.gif)";
echo "<br>google logo sized Image : <b>" . getRemoteFileSize('http://www.google.co.in/intl/en_com/images/logo_plain.png') ."</b>� (http://www.google.co.in/intl/en_com/images/logo_plain.png)";
?>

بفرما دوست عزیز

دنبال فرمت هم هستم اگه شما پیدا کردی اینجا قرار بدید تا به کمک هم بتونیم به یه شکل شیکومجلسی پیادش کنیم

لینک به ارسال

سعی کنید سوالتون رو در بخش مربوطه ارسال کنید (PHP)

پاسخ mehral برای پیوستهای وردپرس هست


function remote_file_size($url){
$head = "";
$url_p = parse_url($url);
$host = $url_p["host"];
if(!preg_match("/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/",$host)){
$ip=gethostbyname($host);
if(!preg_match("/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/",$ip)){
return -1;
}
}
if(isset($url_p["port"]))
$port = intval($url_p["port"]);
else
$port = 80;
if(!$port) $port=80;
$path = $url_p["path"];
$fp = fsockopen($host, $port, $errno, $errstr, 20);
if(!$fp) {
return false;
} else {
fputs($fp, "HEAD " . $url . " HTTP/1.1\r\n");
fputs($fp, "HOST: " . $host . "\r\n");
fputs($fp, "User-Agent: http://www.example.com/my_application\r\n");
fputs($fp, "Connection: close\r\n\r\n");
$headers = "";
while (!feof($fp)) {
$headers .= fgets ($fp, 128);
}
}
fclose ($fp);
$return = -2;
$arr_headers = explode("\n", $headers);
foreach($arr_headers as $header) {
$s1 = "HTTP/1.1";
$s2 = "Content-Length: ";
$s3 = "Location: ";
if(substr(strtolower ($header), 0, strlen($s1)) == strtolower($s1)) $status = substr($header, strlen($s1));
if(substr(strtolower ($header), 0, strlen($s2)) == strtolower($s2)) $size = substr($header, strlen($s2));
if(substr(strtolower ($header), 0, strlen($s3)) == strtolower($s3)) $newurl = substr($header, strlen($s3));
}
if(intval($size) > 0) {
$return=intval($size);
} else {
$return=$status;
}
if (intval($status)==302 && strlen($newurl) > 0) {
$return = remote_file_size($newurl);
}
return $return;
}


function retrieve_remote_file_size($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
$data = curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
return $size;
}


<?php
$remoteFile = 'http://us.php.net/get/php-5.2.10.tar.bz2/from/this/mirror';
$ch = curl_init($remoteFile);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //not necessary unless the file redirects (like the PHP example we're using here)
$data = curl_exec($ch);
curl_close($ch);
if ($data === false) {
echo 'cURL failed';
exit;
}
$contentLength = 'unknown';
$status = 'unknown';
if (preg_match('/^HTTP\/1\.[01] (\d\d\d)/', $data, $matches)) {
$status = (int)$matches[1];
}
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
$contentLength = (int)$matches[1];
}
echo 'HTTP Status: ' . $status . "\n";
echo 'Content-Length: ' . $contentLength;
?>


<?php
// URL to file (link)
$file = 'http://example.com/file.zip';
$ch = curl_init($file);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {
// Contains file size in bytes
$contentLength = (int)$matches[1];
}
?>


strlen(file_get_contents($url_file));

منتقل شد

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...