有什么方法可以从 url 获取文件大小,而无需使用谷歌应用程序脚本下载它。

Shu*_*oni 4 javascript google-apps-script

实际上我不知道如何发出头部请求并读取内容长度。我尝试编写这个函数:

function getfilesize(url) {
  var msg = '';
  var response;

  try {
    response = UrlFetchApp.fetch(url, {
      // muteHttpExceptions: true,
      // validateHttpsCertificates: false,
      followRedirects: true  // Default is true anyway.
    });
catch(e) {
    return e.toString();
  }

var headers = response.getHeaders();
      var content_length = NaN;
      for (var key in headers) {
        if (key.toLowerCase() == 'Content-Length'.toLowerCase()) {
          content_length = parseInt(headers[key], 10);
          break;
        }

      }
return content length;
}
Run Code Online (Sandbox Code Playgroud)

但它返回一个值 1.81619173E8for 173mbin 60 sec任何人都可以建议另一种使用 google apps 脚本更快地完成此操作的方法吗?

sam*_*ime 5

您的代码可能是正确的。即1.81619173E81816191730字节,即173MB。Content-Length始终以字节为单位。

要将其转换为 MB,只需除以 1024 两次(一次将其转换为 KB,再一次将其转换为 MB)。

content_length = parseInt(headers[key], 10) / 1024 / 1024;
Run Code Online (Sandbox Code Playgroud)

对于更改请求类型,看起来fetch()不会HEAD直接接受,但您可以使用X-HTTP-Method标头来覆盖它:

response = UrlFetchApp.fetch(url, {
  method: 'GET',
  headers: {'X-HTTP-Method-Override': 'HEAD'},
  followRedirects: true  // Default is true anyway.
});
Run Code Online (Sandbox Code Playgroud)

这应该让它使用 HEAD 而不是 GET。