Hướng dẫn php file size in mb - kích thước tệp php tính bằng mb

Làm thế nào tôi có thể chuyển đổi đầu ra của chức năng

function filesize_formatted($path)
{
    $size = filesize($path);
    $units = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    $power = $size > 0 ? floor(log($size, 1024)) : 0;
    return number_format($size / pow(1024, $power), 2, '.', ',') . ' ' . $units[$power];
}
1 của PHP thành một định dạng đẹp với megabyte, kilobyte, v.v.?

like:

  • Nếu kích thước nhỏ hơn 1 MB, hãy hiển thị kích thước tính bằng kb
  • Nếu nó nằm trong khoảng từ 1 MB - 1 GB, hãy hiển thị nó trong MB
  • Nếu nó lớn hơn - trong GB

Hướng dẫn php file size in mb - kích thước tệp php tính bằng mb

Yakovl

6.96012 Huy hiệu vàng58 Huy hiệu bạc89 Huy hiệu đồng12 gold badges58 silver badges89 bronze badges

Đã hỏi ngày 31 tháng 3 năm 2011 lúc 14:26Mar 31, 2011 at 14:26

1

Đây là một mẫu:

<?php
// Snippet from PHP Share: http://www.phpshare.org

    function formatSizeUnits($bytes)
    {
        if ($bytes >= 1073741824)
        {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        }
        elseif ($bytes >= 1048576)
        {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        }
        elseif ($bytes >= 1024)
        {
            $bytes = number_format($bytes / 1024, 2) . ' KB';
        }
        elseif ($bytes > 1)
        {
            $bytes = $bytes . ' bytes';
        }
        elseif ($bytes == 1)
        {
            $bytes = $bytes . ' byte';
        }
        else
        {
            $bytes = '0 bytes';
        }

        return $bytes;
}
?>

Kelderic

6.2688 Huy hiệu vàng44 Huy hiệu bạc82 Huy hiệu đồng8 gold badges44 silver badges82 bronze badges

Đã trả lời ngày 31 tháng 3 năm 2011 lúc 14:28Mar 31, 2011 at 14:28

AdnanadnanAdnan

25.3K18 Huy hiệu vàng79 Huy hiệu bạc110 Huy hiệu đồng18 gold badges79 silver badges110 bronze badges

5

Ngay cả đẹp hơn là phiên bản này tôi đã tạo từ một plugin tôi tìm thấy:

function filesize_formatted($path)
{
    $size = filesize($path);
    $units = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    $power = $size > 0 ? floor(log($size, 1024)) : 0;
    return number_format($size / pow(1024, $power), 2, '.', ',') . ' ' . $units[$power];
}

Lưu ý từ tài liệu fileSize ()

Bởi vì loại số nguyên của PHP được ký hợp đồng và nhiều nền tảng sử dụng số nguyên 32 bit, một số hàm hệ thống tập tin có thể trả về kết quả bất ngờ cho các tệp lớn hơn 2GB

Đã trả lời ngày 8 tháng 8 năm 2012 lúc 8:32Aug 8, 2012 at 8:32

Hướng dẫn php file size in mb - kích thước tệp php tính bằng mb

PithenumberpithenumberPiTheNumber

22K17 Huy hiệu vàng103 Huy hiệu bạc173 Huy hiệu đồng17 gold badges103 silver badges173 bronze badges

5

Cách tiếp cận sạch hơn:

function Size($path)
{
    $bytes = sprintf('%u', filesize($path));

    if ($bytes > 0)
    {
        $unit = intval(log($bytes, 1024));
        $units = array('B', 'KB', 'MB', 'GB');

        if (array_key_exists($unit, $units) === true)
        {
            return sprintf('%d %s', $bytes / pow(1024, $unit), $units[$unit]);
        }
    }

    return $bytes;
}

Đã trả lời ngày 31 tháng 3 năm 2011 lúc 15:10Mar 31, 2011 at 15:10

AXELALIX AXELALIXAlix Axel

149K92 Huy hiệu vàng390 Huy hiệu bạc496 Huy hiệu Đồng92 gold badges390 silver badges496 bronze badges

8

Tôi nghĩ rằng đây là một cách tiếp cận tốt hơn. Đơn giản và thẳng về phía trước.

public function sizeFilter( $bytes )
{
    $label = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB' );
    for( $i = 0; $bytes >= 1024 && $i < ( count( $label ) -1 ); $bytes /= 1024, $i++ );
    return( round( $bytes, 2 ) . " " . $label[$i] );
}

Hướng dẫn php file size in mb - kích thước tệp php tính bằng mb

Pithenumber

22K17 Huy hiệu vàng103 Huy hiệu bạc173 Huy hiệu đồng17 gold badges103 silver badges173 bronze badges

Cách tiếp cận sạch hơn:May 21, 2013 at 7:42

Đã trả lời ngày 31 tháng 3 năm 2011 lúc 15:10Teffi

AXELALIX AXELALIX4 gold badges20 silver badges40 bronze badges

2

149K92 Huy hiệu vàng390 Huy hiệu bạc496 Huy hiệu Đồng

Changes:

  • Tôi nghĩ rằng đây là một cách tiếp cận tốt hơn. Đơn giản và thẳng về phía trước.
  • Pithenumber
  • Đã trả lời ngày 21 tháng 5 năm 2013 lúc 7:42

Teffiteffi


/**
 * Formats filesize in human readable way.
 *
 * @param file $file
 * @return string Formatted Filesize, e.g. "113.24 MB".
 */
function filesize_formatted($file)
{
    $bytes = filesize($file);

    if ($bytes >= 1073741824) {
        return number_format($bytes / 1073741824, 2) . ' GB';
    } elseif ($bytes >= 1048576) {
        return number_format($bytes / 1048576, 2) . ' MB';
    } elseif ($bytes >= 1024) {
        return number_format($bytes / 1024, 2) . ' KB';
    } elseif ($bytes > 1) {
        return $bytes . ' bytes';
    } elseif ($bytes == 1) {
        return '1 byte';
    } else {
        return '0 bytes';
    }
}

2.4434 huy hiệu vàng20 Huy hiệu bạc40 Huy hiệu đồngSep 20, 2014 at 22:52

Điều này dựa trên câu trả lời tuyệt vời của @Adnan.Jens A. Koch

Đã thêm tệp nội bộ () cuộc gọi13 gold badges106 silver badges133 bronze badges

trả lại phong cách sớmwrong! (1 kibibyte = 1024 bytes)

Tiết kiệm một người đồng nhất trên 1 byte1 kilobyte = 1000 bytes (see https://wiki.ubuntu.com/UnitsPolicy)

function format_bytes($bytes, $precision = 2) {
    $units = array('B', 'KB', 'MB', 'GB');

    $bytes = max($bytes, 0);
    $pow = floor(($bytes ? log($bytes) : 0) / log(1000));
    $pow = min($pow, count($units) - 1);

    $bytes /= pow(1000, $pow);

    return round($bytes, $precision) . ' ' . $units[$pow];
}

Và bạn vẫn có thể rút các tệp () gọi ra khỏi hàm, để có được hàm định dạng byte thuần túy. Nhưng điều này hoạt động trên một tập tin.Oct 17, 2018 at 8:36

Đã trả lời ngày 20 tháng 9 năm 2014 lúc 22:52miyuru

Jens A. Kochjens A. Koch11 silver badges19 bronze badges

1

38.3K13 Huy hiệu vàng106 Huy hiệu bạc133 Huy hiệu đồng

function size2Byte($size) {
    $units = array('KB', 'MB', 'GB', 'TB');
    $currUnit = '';
    while (count($units) > 0  &&  $size > 1024) {
        $currUnit = array_shift($units);
        $size /= 1024;
    }
    return ($size | 0) . $currUnit;
}

Tất cả các câu trả lời cho câu hỏi sử dụng 1 kilobyte = 1024 byte là sai! (1 kibibyte = 1024 byte)Apr 1, 2015 at 20:59

Vì câu hỏi yêu cầu chuyển đổi kích thước tệp, nên sử dụng 1 kilobyte = 1000 byte đó (xem https://wiki.ubuntu.com/unitspolicy)Bat Fung

Đã trả lời ngày 17 tháng 10 năm 2018 lúc 8:361 silver badge2 bronze badges

Miyurumiyuru

<?php
    $units = explode(' ','B KB MB GB TB PB');
    echo("<html><body>");
    echo('file size: ' . format_size(filesize("example.txt")));
    echo("</body></html>");


    function format_size($size) {

        $mod = 1024;

        for ($i = 0; $size > $mod; $i++) {
            $size /= $mod;
        }

        $endIndex = strpos($size, ".")+3;

        return substr( $size, 0, $endIndex).' '.$units[$i];
    }
?>

1.09111 Huy hiệu bạc19 Huy hiệu đồngDec 1, 2011 at 22:56

Đây sẽ là một triển khai sạch hơn:vdbuilder

Đã trả lời ngày 1 tháng 4 năm 2015 lúc 20:592 gold badges23 silver badges29 bronze badges

function calcSize($size,$accuracy=2) {
    $units = array('b','Kb','Mb','Gb');
    foreach($units as $n=>$u) {
        $div = pow(1024,$n);
        if($size > $div) $output = number_format($size/$div,$accuracy).$u;
    }
    return $output;
}

Nấm dơi nấmJul 13, 2015 at 12:11

Hướng dẫn php file size in mb - kích thước tệp php tính bằng mb

611 Huy hiệu bạc2 Huy hiệu đồngbarners

Một ví dụ hoàn chỉnh.2 silver badges12 bronze badges

function getNiceFileSize($file, $digits = 2){
    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;
}

Đã trả lời ngày 1 tháng 12 năm 2011 lúc 22:56Mar 25, 2016 at 11:14

Hướng dẫn php file size in mb - kích thước tệp php tính bằng mb

VdBuilderVdBuilderHamed

11.6K2 Huy hiệu vàng23 Huy hiệu bạc29 Huy hiệu đồng1 silver badge5 bronze badges

function filesize_formatted($path)
{
    $size = filesize($path);
    $units = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    $power = $size > 0 ? floor(log($size, 1024)) : 0;
    return number_format($size / pow(1024, $power), 2, '.', ',') . ' ' . $units[$power];
}
0

Đã trả lời ngày 13 tháng 7 năm 2015 lúc 12:11Dec 24, 2016 at 10:41

Làm thế nào bạn sẽ có được kích thước của một tệp trong PHP?

Để có được kích thước tệp, chúng tôi sẽ sử dụng hàm fileSize (). Hàm fileSize () trả về kích thước của một tệp trong byte. Hàm này chấp nhận tên tệp làm tham số và trả về kích thước của một tệp trong byte thành công và sai về lỗi.use filesize() function. The filesize() function returns the size of a file in bytes. This function accepts the filename as a parameter and returns the size of a file in bytes on success and False on failure.

Làm cách nào để chuyển đổi MB thành kích thước?

Megabyte là bội số của byte đơn vị cho thông tin kỹ thuật số.Biểu tượng đơn vị được đề xuất của nó là MB.Tiền tố đơn vị Mega là số nhân 1000000 (106) trong Hệ thống đơn vị quốc tế (SI).Do đó, một megabyte là một triệu byte thông tin.

Làm thế nào để bạn tìm thấy kích thước tệp?

Nhấp chuột phải vào tệp và nhấp vào thuộc tính.Hình ảnh bên dưới cho thấy bạn có thể xác định kích thước của tệp hoặc tệp bạn đã tô sáng trong cửa sổ thuộc tính tệp.Trong ví dụ này, chrome.Tệp JPG là 18,5 kb (19.032 byte) và kích thước trên đĩa là 20,0 kb (20.480 byte).. The image below shows that you can determine the size of the file or files you have highlighted from in the file properties window. In this example, the chrome. jpg file is 18.5 KB (19,032 bytes), and that the size on disk is 20.0 KB (20,480 bytes).

Làm thế nào lớn là một tài liệu từ trong byte?

Một định dạng tài liệu tài liệu của Microsoft Word có nhiều ký tự phù hợp (trong khoảng từ 4.002 - 7.177 tùy thuộc vào ký tự được sử dụng) nằm trong khoảng 11,588 - 11.741 byte (cho phép làm tròn tới 12 kb).Một terabyte (TB) bằng 1.000.000.000 byte.11,588 - 11,741 bytes (lets just round up to 12 KB). A Terabyte (TB) is equal to 1,000,000,000 bytes.