Java 获取远程url的文件大小,无需在Google app engine(php)中下载

Java 获取远程url的文件大小,无需在Google app engine(php)中下载,java,php,google-app-engine,curl,Java,Php,Google App Engine,Curl,您好,我想检查一些远程文件大小的文件大小,低于csize函数在localhost中正常工作的大小。但是当我在google app engine中托管时,我知道没有curl支持。所以我使用了purl包装器。但我仍然面临错误 我听说可以在gae php文件中使用java。如果可以,java中是否有任何函数可以获取远程文件的文件大小?如果是,如何在php中使用它 <?php require_once 'Purl.php'; echo csize('http://www.example.co

您好,我想检查一些远程文件大小的文件大小,低于csize函数在localhost中正常工作的大小。但是当我在google app engine中托管时,我知道没有curl支持。所以我使用了purl包装器。但我仍然面临错误

我听说可以在gae php文件中使用java。如果可以,java中是否有任何函数可以获取远程文件的文件大小?如果是,如何在php中使用它

<?php

require_once 'Purl.php';


echo csize('http://www.example.com');


function csize($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
return $size;
}

只需使用http streams API即可

function csize($url) {
  $options = ['http' => [
      'method' => 'HEAD',
    ],
  ];
  $ctx = stream_context_create($options);
  $result = file_get_contents($url, false, $ctx);
  if ($result !== false) {
    foreach($http_response_header as $header) {
      if (preg_match("/Content-Length: (\d+)/i", $header, $matches)) {
        return $matches[1];
      }
    }
  }
}

这需要在检查之前下载文件吗?嘿,你也可以看看这个问题吗,谢谢