You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Google Cloud Storage空文件getMetadata().size显示20字节的疑问

GCS空文件元数据size显示20字节的问题解答
  • 为什么getMetadata().size会报告20字节?
    你上传时开启了gzip: true选项,空文件被gzip压缩后会生成一个包含基础压缩结构(文件头、校验信息等)的最小压缩包,这个压缩包的大小正好是20字节。GCS存储的是压缩后的文件,所以元数据里的size字段反映的是云端存储的压缩文件实际大小,而非原文件的0字节。

  • 这是否与元数据或GCS特定开销相关?
    和GCS的元数据额外开销无关,完全是gzip压缩机制导致的。GCS不会为空文件额外添加字节,这个20字节是压缩后文件本身的固有大小。

  • 能否避免该大小差异,还是这属于预期行为?
    可以避免:如果不需要gzip压缩,上传时去掉gzip: true选项,空文件上传后元数据的size就会显示为0。如果必须使用gzip压缩,这个差异属于预期行为——云端存储的是压缩态文件,size是压缩后的实际存储大小,下载时客户端会自动解压缩,因此得到的是原文件的0字节大小。

  • 该值是否始终为20字节?
    是的,对于空文件开启gzip压缩的场景,这个压缩后的大小是固定的20字节,因为gzip的最小压缩包结构尺寸是固定的。

你的上传代码中明确设置的gzip: true是问题的关键:

const storage = new Storage({ projectId })
const bucket = storage.bucket(bucketName)
let options = {
  gzip: true, // 该选项触发了空文件的压缩操作
  destination: path,
  metadata: { cacheControl: "public, max-age=31536000" }
}
const [file] = await bucket.upload(path, options)

内容的提问来源于stack exchange,提问作者young B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:26:01