JavaScript lấy kích thước tệp từ URL

JavaScript được biết đến nhiều nhất để phát triển trang web nhưng nó cũng được sử dụng trong nhiều môi trường không có trình duyệt. Bạn có thể học JavaScript từ đầu bằng cách làm theo Hướng dẫn JavaScript và Ví dụ về JavaScript này

Show

Đôi khi cả hai trả về các kết quả khác nhau vì get_headers sẽ thực hiện yêu cầu GET theo mặc định trong khi bạn đã định cấu hình cURL để thực hiện yêu cầu HEAD. Bắt đầu bằng cách tạo yêu cầu giống với những gì cURL gửi bằng cách đặt ngữ cảnh luồng HTTP khác bằng cách sử dụng HEAD cho phương thức yêu cầu

Mục lục

  • Làm cách nào để có được kích thước tệp từ xa hoặc kích thước URL ở định dạng B, KB, MB, GB bằng PHP?
    • 1. ) Gửi yêu cầu phần đầu cURL và trích xuất giá trị ["Content-Length"] từ phần đầu
    • 2. ) Gửi yêu cầu get_headers() GET và trích xuất giá trị ["Content-Length"] từ tiêu đề
    • 3. ) Mã thay thế nếu ["Content-Length"] không có trong tiêu đề
    • 4. ) Mã thay thế nếu không muốn đếm độ dài nội dung/độ dài chuỗi
  • Từ cuối cùng

Làm cách nào để có được kích thước tệp từ xa hoặc kích thước URL ở định dạng B, KB, MB, GB bằng PHP?

Có nhiều cách để lấy kích thước tệp hoặc URL nhưng ở đây chúng tôi đang chia sẻ 3 cách khác nhau hàng đầu để lấy nó. Bạn có thể thử tất cả những thứ bên dưới nhưng những thứ này có các thuộc tính hoặc tính năng khác nhau mà bạn nên chọn gì theo yêu cầu của mình. Ngoài ra, thực hiện các thay đổi theo nhu cầu của bạn

Đề xuất cho bạn

Mã DIV thành công, cảnh báo, thông báo và lỗi tuyệt vời

1. ) Gửi một yêu cầu tiêu đề function getRemoteFilesize($file_url, $formatSize = true) { $head = array_change_key_case(get_headers($file_url, 1)); // content-length of download (in bytes), read from Content-Length: field $clen = isset($head['content-length']) ? $head['content-length'] : 0; // cannot retrieve file size, return “-1” if (!$clen) { return 0; } if (!$formatSize) { return $clen; // return size in bytes } $size = $clen; switch ($clen) { case $clen < 1024: $size = $clen .' B'; break; case $clen < 1048576: $size = round($clen / 1024, 2) .' KB'; break; case $clen < 1073741824: $size = round($clen / 1048576, 2) . ' MB'; break; case $clen < 1099511627776: $size = round($clen / 1073741824, 2) . ' GB'; break; } return $size; }1 và trích xuất giá trị function getRemoteFilesize($file_url, $formatSize = true) { $head = array_change_key_case(get_headers($file_url, 1)); // content-length of download (in bytes), read from Content-Length: field $clen = isset($head['content-length']) ? $head['content-length'] : 0; // cannot retrieve file size, return “-1” if (!$clen) { return 0; } if (!$formatSize) { return $clen; // return size in bytes } $size = $clen; switch ($clen) { case $clen < 1024: $size = $clen .' B'; break; case $clen < 1048576: $size = round($clen / 1024, 2) .' KB'; break; case $clen < 1073741824: $size = round($clen / 1048576, 2) . ' MB'; break; case $clen < 1099511627776: $size = round($clen / 1073741824, 2) . ' GB'; break; } return $size; }2 từ tiêu đề

Đây là cách tốt nhất (mà tôi đã tìm thấy) để lấy kích thước của tệp từ xa. Lưu ý rằng các yêu cầu HEAD không nhận được nội dung thực của yêu cầu, chúng chỉ truy xuất các tiêu đề. Vì vậy, thực hiện yêu cầu HEAD đối với tài nguyên có dung lượng 100 MB sẽ mất cùng thời gian với yêu cầu HEAD đối với tài nguyên có dung lượng 1KB

function curlRemoteFilesize( $url, $formatSize = true )
{
// Assume Failure
$result = 0;

$curl = curl_init( $url );

// Issue a HEAD request and follow any redirects.
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

$data = curl_exec( $curl );

curl_close( $curl );

if( $data ) {
$content_length = 0;
$status = 0;

if( preg_match("/^HTTP\/1\.[01] (\d\d\d)/", $data, $matches) ) {
$status = (int)$matches[1];
}

if( preg_match("/Content-Length: (\d+)/", $data, $matches) ) {
$content_length = (int)$matches[1];
}

// http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
if( $status == 200 || ($status > 300 && $status <= 308) ) {
$result = $content_length;
}
}

if (!$formatSize) {
return $result;
// return size in bytes
}

$size = $result;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}

2. ) Gửi yêu cầu GET function getRemoteFilesize($file_url, $formatSize = true) { $head = array_change_key_case(get_headers($file_url, 1)); // content-length of download (in bytes), read from Content-Length: field $clen = isset($head['content-length']) ? $head['content-length'] : 0; // cannot retrieve file size, return “-1” if (!$clen) { return 0; } if (!$formatSize) { return $clen; // return size in bytes } $size = $clen; switch ($clen) { case $clen < 1024: $size = $clen .' B'; break; case $clen < 1048576: $size = round($clen / 1024, 2) .' KB'; break; case $clen < 1073741824: $size = round($clen / 1048576, 2) . ' MB'; break; case $clen < 1099511627776: $size = round($clen / 1073741824, 2) . ' GB'; break; } return $size; }3 và trích xuất giá trị function getRemoteFilesize($file_url, $formatSize = true) { $head = array_change_key_case(get_headers($file_url, 1)); // content-length of download (in bytes), read from Content-Length: field $clen = isset($head['content-length']) ? $head['content-length'] : 0; // cannot retrieve file size, return “-1” if (!$clen) { return 0; } if (!$formatSize) { return $clen; // return size in bytes } $size = $clen; switch ($clen) { case $clen < 1024: $size = $clen .' B'; break; case $clen < 1048576: $size = round($clen / 1024, 2) .' KB'; break; case $clen < 1073741824: $size = round($clen / 1048576, 2) . ' MB'; break; case $clen < 1099511627776: $size = round($clen / 1073741824, 2) . ' GB'; break; } return $size; }2 từ tiêu đề

Sử dụng yêu cầu HEAD và kiểm tra Độ dài nội dung là cách tiêu chuẩn để thực hiện, nhưng nói chung, bạn không thể dựa vào yêu cầu đó vì máy chủ có thể không hỗ trợ yêu cầu đó. Tiêu đề Độ dài nội dung là tùy chọn và hơn nữa, máy chủ thậm chí có thể không triển khai phương thức HEAD. Nếu bạn biết mình đang thăm dò máy chủ nào, thì bạn có thể kiểm tra xem nó có hoạt động hay không, nhưng giải pháp chung là nó không chống đạn được

function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}

3. ) Mã thay thế nếu không có function getRemoteFilesize($file_url, $formatSize = true) { $head = array_change_key_case(get_headers($file_url, 1)); // content-length of download (in bytes), read from Content-Length: field $clen = isset($head['content-length']) ? $head['content-length'] : 0; // cannot retrieve file size, return “-1” if (!$clen) { return 0; } if (!$formatSize) { return $clen; // return size in bytes } $size = $clen; switch ($clen) { case $clen < 1024: $size = $clen .' B'; break; case $clen < 1048576: $size = round($clen / 1024, 2) .' KB'; break; case $clen < 1073741824: $size = round($clen / 1048576, 2) . ' MB'; break; case $clen < 1099511627776: $size = round($clen / 1073741824, 2) . ' GB'; break; } return $size; }2 trong tiêu đề

Thật không may, có nhiều máy chủ HTTP không hoạt động chính xác đối với tiêu đề

function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}
1. Vì
function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}
2 phản hồi không có nội dung thực tế nên họ trả về một
function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}
1 khác với một
function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}
4 sẽ làm

Đề xuất cho bạn

Thanh trượt lời chứng thực JavaScript sành điệu cho blog và trang web

Nếu không có tiêu đề

function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}
1, điều đó có nghĩa là kích thước tệp không xác định. Trong trường hợp của bạn, bạn có tiêu đề
function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}
6, có nghĩa là tệp có thể tải xuống là tệp đính kèm vào phản hồi của máy chủ (giống như tệp đính kèm trong email). Vì vậy, ở đây nếu bạn không có tiêu đề Độ dài nội dung, bạn không thể lấy kích thước

Bạn sẽ không biết trước kích thước của nội dung nếu không có tiêu đề Độ dài nội dung

Nếu bạn không thể kiểm soát máy chủ thì bạn sẽ phải xử lý nó. Một tùy chọn sẽ là truyền dữ liệu vào một tệp tạm thời trên đĩa và khi bạn có tệp đó, bạn có thể xác định kích thước và chuyển nó sang bước tiếp theo trong bất kỳ việc gì bạn đang làm.

Bạn có thể truyền nó vào bộ nhớ đệm nhưng vì bạn không biết nó sẽ lớn đến mức nào nên có nguy cơ bạn sẽ hết bộ nhớ

Vì vậy, giải pháp duy nhất là tải xuống và đọc nội dung và tìm ra

function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}
7 bằng byte và sau đó làm theo các quy trình tiếp theo

function curlRemoteFileContentsize( $url, $formatSize = true )
{
$ch = curl_init();
$timeout = 5; //5 is seconds
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,$timeout);
curl_setopt($ch, CURLOPT_HEADER, 1);
// this function is called by curl for each header received
$tempCURLVar = curl_exec($ch);
$webPageContent = $tempCURLVar;
curl_close($ch);
$result = mb_strlen($webPageContent);

if (!$formatSize) {
return $result;
// return size in bytes
}

$size = $result;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}

4. ) Mã thay thế nếu không muốn đếm độ dài nội dung/độ dài chuỗi

function getRemoteFilesize($file_url, $formatSize = true)
{
$head = array_change_key_case(get_headers($file_url, 1));
// content-length of download (in bytes), read from Content-Length: field
$clen = isset($head['content-length']) ? $head['content-length'] : 0;
// cannot retrieve file size, return “-1”
if (!$clen) {
return 0;
}
if (!$formatSize) {
return $clen;
// return size in bytes
}
$size = $clen;
switch ($clen) {
case $clen < 1024:
$size = $clen .' B'; break;
case $clen < 1048576:
$size = round($clen / 1024, 2) .' KB'; break;
case $clen < 1073741824:
$size = round($clen / 1048576, 2) . ' MB'; break;
case $clen < 1099511627776:
$size = round($clen / 1073741824, 2) . ' GB'; break;
}
return $size;
}
0

Từ cuối cùng

Hãy nhận biết rằng các được đặt tốt trong tài liệu của bạn. Tất cả phần còn lại nằm trong tay bạn nếu bạn muốn tùy chỉnh nó hoặc chơi với nó. Đó là tất cả những gì chúng tôi có. Nếu bạn có bất kỳ vấn đề nào với mã này trong mẫu của mình, vui lòng liên hệ với chúng tôi để giải thích đầy đủ về vấn đề của bạn. Chúng tôi sẽ trả lời bạn khi thời gian cho phép. Đừng quên chia sẻ điều này với bạn bè của bạn để họ cũng có thể hưởng lợi từ nó và rời đi

Làm cách nào để lấy kích thước tệp từ URL trong JavaScript?

Cách lấy thông tin tệp (tên, kích thước, loại) trong JavaScript .
Nhận tên tệp trong JavaScript. tài liệu. getElementById('tệp'). tệp [0]. .
Nhận kích thước tệp trong JavaScript. tài liệu. getElementById('tệp'). tệp [0]. .
Nhận loại tệp trong JavaScript. tài liệu. getElementById('tệp'). tệp [0]. .
Nhận ngày sửa đổi tệp trong JavaScript. tài liệu

Làm cách nào để lấy kích thước tệp trong JavaScript?

Cách tiếp cận 1. .
Lắng nghe sự kiện thay đổi trên đầu vào
Kiểm tra xem có tệp nào là tệp được chọn không. chiều dài > 0
Lấy kích thước của tệp theo tệp. mục (tôi). kích thước
Giá trị sẽ được tính bằng byte. Chuyển đổi nó thành bất kỳ đơn vị nào bạn muốn, Megabyte trong trường hợp này bằng Toán học. .
Kiểm tra xem kích thước có tuân theo tiêu chí mong muốn của bạn không

Làm cách nào để lấy kích thước tệp từ URL trong jquery?

ajax({ loại. "HEAD", url. $("#url"). val(), thành công. function () { alert("Kích thước là " + request. getResponseHeader("Content-Length"));

Làm cách nào để lấy kích thước tệp hình ảnh trong js?

Trả lời. Sử dụng Chiều rộng tự nhiên và Chiều cao tự nhiên của HTML5 . Các thuộc tính này được hỗ trợ trong tất cả các trình duyệt web chính như Chrome, Firefox, Safari, Opera, Internet Explorer 9 trở lên.