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

使用wget下载预签名S3 URL得到二进制文件而非ASCII文本问题

解决wget下载S3预签名URL得到二进制文件的问题

从你提供的wget输出能看到,S3返回的Content-Type是binary/octet-stream,这导致wget直接按二进制保存,而Chrome会自动识别文件实际类型并处理。以下是几个可行的解决方法:

方法1:指定Accept请求头获取文本内容

强制让S3返回文本类型的响应,给wget加上--header参数:

wget --no-check-certificate --no-proxy --header="Accept: text/plain,text/*" "https://s3.eu-central-1.amazonaws.com/.../text_file.txt"

方法2:处理可能的gzip压缩

如果文件在S3上是gzip压缩存储的,Chrome会自动解压,但wget默认不会。可以让wget自动处理压缩:

wget --no-check-certificate --no-proxy --compression=gzip --header="Accept-Encoding: gzip" "https://s3.eu-central-1.amazonaws.com/.../text_file.txt"

如果已经下载了二进制文件,也可以直接用gunzip解压:

gunzip text_file.txt

方法3:模拟Chrome的User-Agent

S3有时会根据请求的User-Agent返回不同的内容格式,模拟Chrome的请求头试试:

wget --no-check-certificate --no-proxy --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36" "https://s3.eu-central-1.amazonaws.com/.../text_file.txt"

补充说明

核心问题是wget和Chrome发送的请求头差异,导致S3返回的响应处理方式不同。Chrome会发送更偏向文本的Accept头,并且自动处理压缩,而wget默认的请求头更通用,所以返回二进制流。通过调整wget的请求参数对齐Chrome的行为,就能得到正常的ASCII文本文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:15:38