首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对S3预签名url的Fetch GET请求返回的是二进制格式,而不是下载文档

S3预签名URL是Amazon Simple Storage Service(S3)提供的一种机制,用于生成一个临时的URL,允许用户在不需要AWS凭证的情况下访问S3存储桶中的对象。预签名URL可以用于授权第三方用户或应用程序访问私有的S3对象。

当使用Fetch GET请求获取S3预签名URL时,返回的数据是以二进制格式返回的,而不是直接下载文档。这是因为Fetch API是一种用于获取资源的Web API,它返回的数据可以是多种格式,包括文本、JSON、Blob(二进制数据对象)等。在这种情况下,由于预签名URL返回的是文件的二进制数据,因此Fetch GET请求返回的也是二进制格式的数据。

要下载该文档,您可以使用JavaScript中的Blob对象和URL.createObjectURL()方法将二进制数据转换为可下载的URL。以下是一个示例代码:

代码语言:txt
复制
fetch('S3预签名URL')
  .then(response => response.blob())
  .then(blob => {
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = '文件名';
    a.click();
    URL.revokeObjectURL(url);
  })
  .catch(error => {
    console.error('下载文件时发生错误:', error);
  });

在上述代码中,我们首先使用fetch函数获取S3预签名URL返回的二进制数据,并将其转换为Blob对象。然后,我们使用URL.createObjectURL()方法创建一个可下载的URL,并将其赋值给一个新创建的<a>元素的href属性。接下来,我们设置该<a>元素的download属性为您希望保存的文件名,并模拟用户点击该<a>元素来触发下载。最后,我们使用URL.revokeObjectURL()方法释放URL对象。

需要注意的是,上述代码中的'S3预签名URL'应替换为您实际的S3预签名URL,'文件名'应替换为您希望保存的文件名。

腾讯云提供了类似的对象存储服务,您可以参考腾讯云对象存储(COS)产品,了解更多关于对象存储的信息和使用方法。具体信息请参考腾讯云COS产品介绍:腾讯云对象存储(COS)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

借助Amazon S3实现异步操作状态轮询Serverless解决方法

收到 POST 请求 lambda 函数会生成包含操作状态签名 URL,并将其返回给客户端。...在返回签名 URL 以便于进行轮询 lambda 函数中,我们还可以在响应中包含一个预估时间,即客户端在什么时候可以开始询问操作状态。...安全方面的考虑因素 虽然在默认情况下,S3 中所有的文件和桶都是私有的,但是创建签名 URL 会允许在限定时间范围内访问这些文件。获取了签名 URL 所有人都能读取状态文件。...关于这方面的更多信息,请查阅他们文档。 收益分析 将轮询功能委托给 S3 能够让主服务只处理实际业务逻辑请求不用持续地检查更新。...我们需要为每个操作生成一个 S3 签名 URL,并将其返回给客户端,以便于客户端调用它,这样的话,计算资源就能处理应用程序主业务逻辑,不必通过 API 调用检查操作状态。

3.4K20

前端工程师,揭开HTTP神秘面纱

数据链路层: 定义了如何让格式化数据以进行传输,以及如何让控制物理介质访问。这一层通常还提供错误检测和纠正,以确保数据可靠传输。   ...HTTP1.x基于文本,无法保证健壮性,HTTP2.0绝对使用新二进制格式,方便且健壮 同一个连接里面发送多个请求不再需要按照顺序来 头信息压缩以及推送等提高效率功能 三次握手 8.png...虽然不允许跨域,但是请求仍然会发送,并返回成功。 15.png 默认允许请求方法: GET HEAD POST 其他方法(PUT、DELETE)都需要请求验证。...,请求就是告诉浏览器接下来要发送post请求是被允许。...,意思就是在多少秒以内,我们设置这些允许请求头,请求方法,不需要发送请求验证,直接就可以通过,并发送。

47260
  • 半小时搞懂 HTTP、HTTPS和HTTP2

    请求行和首部由 ASCII 文本组成,实体主体可选,可以为空也可以是任意二进制数据。 请求报文和响应报文格式基本相同。...OPTIONS 决定可以在服务器上执行哪些方法 DELETE 从服务器上删除一份文档 GET 和 HEAD 其中 GET 和 HEAD 被称为安全方法,因为它们幂等(如果一个请求不管执行多少次,其结果都是一样...服务器开发者必须确保返回首部与 GET 请求返回首部完全相同。遵循 HTTP/1.1 规范,就必须实现 HEAD 方法。...PUT 与 GET 方法从服务器读取文档相反,PUT 方法会向服务器写入文档。PUT 方法语义就是让服务器用请求主体部分来创建一个由所请求 URL 命名文档。 如果那个文档已存在,就覆盖它。...,要么提供一个替代响应不是资源内容。

    4.7K42

    MinIO 分片上传

    后台调用 MinIO API 创建分片上传任务(得到一个上传 ID ),并为该任务生成分片上传签名链接(上传地址列表)后返回给客户端,客户端将对应分片按照到对应连接传递到 MinIO 中。...但是,我们可以使用签名 URL 选择性地共享对象,或者允许用户通过签名 URL 将对象上传到桶,而无需安全凭证或权限。...获取分片上传签名 URL 后台需要根据客户端欲上传文件总大小和分片大小计算出总分片数,然后向 MinIO 获取每个分片上传签名 URL。...在获取分片上传签名 URL 之前,需要创建一个 upload ID。...提示内容将 API 请求发送到了控制台端口。检查一了一下,我确实在初始化 SQLite client 时,使用了控制台 Web UI 端口。

    3.4K20

    具有EC2自动训练无服务器TensorFlow工作流程

    将焦点转移到此处不是完成JavaScript Lambda函数动机,train如果完成了EC2 / ECR集成,则可以更轻松地验证功能,否则将无法验证启动脚本是否正常运行。...TensorFlow.js浏览器版本使用fetch不是Node.js中标准版本。为了解决这个问题,将安装node-fetch,并在fetch全局范围内使用它。...对于使用签名URL HTTP访问S3 一个合理选择,但是在下载步骤TensorFlow实际上在做两件事: https://docs.aws.amazon.com/AWSJavaScriptSDK/...latest/AWS/S3.html#getSignedUrl-property 下载model.json-可以在此处传递签名URL 使用url下载模型拓扑-步骤1中签名url将不再起作用!...要解决此问题,将使用单独代理,该代理将接收每个请求并将其重定向到适当签名url

    12.5K10

    全面分析前端网络请求方式

    函数 open 用于初始化一个请求,用法: xhr.open(method, url, async); method:请求方式,如 get、post url请求 url async:是否为异步请求...| "blob"| response一个包含二进制数据 Blob 对象 。...常用配置: url 当前页地址。发送请求地址。 type 类型: String 请求方式 ( "POST" 或 "GET"), 默认为 "GET"。...当网络故障时或请求被阻止时,才会标记为 reject,如跨域、 url不存在,网络异常等会触发 onerror。 所以使用fetch当接收到异常状态码都是会进入then不是catch。...这也遵循了原生 fetch原则: 因为Responses对象被设置为了 stream 方式,所以它们只能被读取一次 十、fetch坑点 VUE文档 fetch有下面的描述: 使用 fetch

    1.7K40

    利用 Chrome DevTools 把微博打包成 zip 文件

    过去在微博遇到许多有趣内容,但常常因为时间太久远,回看收藏链接往往返回404,记忆也随之变成了一个个空洞。...脑洞打开,是不是可以把一条微博涉及到各种文件一键打包下载,在本地阅读呢,就像 docx 文档格式一样。...理论上来说,文件本质一系列二进制数据集合,HTML5 FileAPI 提供了处理二进制数据对象 Blob。...遍历时候 fetch ,相应请求时候调用 response.blob() 让这个请求返回对应 Blob。...但这里有个问题,微博配图和视频都不是同一个域名之下资源,会受到 CORS 机制 限制,微博返回请求也没有对应 CORS 头部,自然会被拦截。

    1.3K20

    2022秋招前端面试题(五)(附答案)

    但是问题来了,如果中间⼈篡改了证书,那么身份证明是不是就⽆效了?这个证明就⽩买了,这个时候需要⼀个新技术,数字签名。...缺点:fetch只对网络请求报错,400,500都当做成功请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完成时,fetch 才会被 reject。...实现超时控制并不能阻止请求过程继续在后台运行,造成了流量浪费fetch没有办法原生监测请求进度,XHR可以(3)Axios Axios 一种基于Promise封装HTTP客户端,其特点如下...303 状态码通常作为 PUT 或 POST 操作返回结果,它表示重定向链接指向不是新上传资源,而是另外一个页面,比如消息确认页面或上传进度页面。请求重定向页面的方法要总是使用 GET。...解释性语言和编译型语言区别(1)解释型语言使用专门解释器源程序逐行解释成特定平台机器码并立即执行。代码在执行时才被解释器一行行动态翻译和执行,不是在执行之前就完成翻译。

    53040

    【笔记】618- 读《你不知道 Blob》笔记

    arrayBuffer():返回一个 Promise 对象且包含 Blob 所有内容二进制格式 ArrayBuffer 。...从互联网下载数据 在实现“从互联网下载数据”方法时,我们使用 createObjectURL 显示图片,在请求互联网图片时,我们有两种方式: 使用 XMLHttpRequest ; 使用 fetch ;...对比发现,ArrayBuffer 数据,可以按照字节去操作 Blob 只能作为一个完整对象去处理。所以说,ArrayBuffer 相比 Blob 更接近真实二进制,更底层。 2....URL不是所有浏览器都支持通过 XMLHttpRequest 获取源数据。...在文章最后,也通过和大家复习了“Blob URL 和 Data URL 区别”,让我们 Blob 有更深认识。

    3.3K40

    你不知道 Blob

    stream():返回一个能读取 blob 内容 ReadableStream。 text():返回一个 Promise 对象且包含 blob 所有内容 UTF-8 格式 USVString。...arrayBuffer():返回一个 Promise 对象且包含 blob 所有内容二进制格式 ArrayBuffer。 这里我们需要注意,Blob 对象是不可改变。...1.Blob URL/Object URL Blob URL/Object URL 一种伪协议,允许 Blob 和 File 对象用作图像,下载二进制数据链接等 URL 源。...在编写 HTML 网页时,对于一些简单图片,通常会选择将图片内容直接内嵌在网页中,从而减少不必要网络请求,但是图片数据二进制数据,该怎么嵌入呢?...如果数据文本类型,你可以直接将文本嵌入(根据文档类型,使用合适实体字符或转义字符)。如果二进制数据,你可以将数据进行 base64 编码之后再进行嵌入。

    4.1K20

    macOS 应用公证 - 让用户信赖你应用

    导语macOS 下 AppStore 不是唯一能下载 App 渠道,做为应用开发者,我们也能把应用发布在网站上提供给用户下载安装。那么,我们如何让用户信任我们开发软件呢?...公证公证其实本质上把(App、安装包)上传到苹果公证服务进行公证,然后在安装过程中Gatekeeper会去请求服务器,根据返回数据判断App是否公证检验通过。... Xcode 自定义编译 targets,不是macOS app类型这种情况下公证。...JSON Web Token(JWT)App Store Connect API 通过 JWTs 来每一次请求进行验证,每次请求都得包含这个token("Authorization: Bearer...JWT需要用到 Private Key 来进行签名,具体格式看jwt.io上Encode&Decode。

    3.8K130

    Blob

    arrayBuffer():返回一个 Promise 对象且包含 blob 所有内容二进制格式 ArrayBuffer。 这里我们需要注意,Blob 对象是不可改变。...1.Blob URL/Object URL Blob URL/Object URL 一种伪协议,允许 Blob 和 File 对象用作图像,下载二进制数据链接等 URL 源。...在编写 HTML 网页时,对于一些简单图片,通常会选择将图片内容直接内嵌在网页中,从而减少不必要网络请求,但是图片数据二进制数据,该怎么嵌入呢?...如果数据文本类型,你可以直接将文本嵌入(根据文档类型,使用合适实体字符或转义字符)。如果二进制数据,你可以将数据进行 base64 编码之后再进行嵌入。... encoderOptions 用于表示图片质量,在指定图片格式为 image/jpeg 或 image/webp 情况下,可以从 0 到 1 区间内选择图片质量。

    6.2K40

    谁说前端不需要懂二进制

    从前后端整体上来说前端代表 UI 层,它外在表现是 human readable 服务端代表数据层,所表现出来 machine readable。...二进制相互转换图 二进制相关数据类型 在介绍常见二进制数据处理之前,先简单介绍下几种二进制相关数据类型 ArrayBuffer && TypedArray TypedArray ES6+ 新增描述二进制数据类数组数据结构...=> console.log(url)) 数据输入 数据输入或者叫资源请求可以分为以下两种途径 通过 url 地址请求网络资源 通过文件上传请求本地资源 fetch fetch 应该是大家比较熟悉...其实, 「它也可以设置返回数据格式为 Blob 或者 ArrayBuffer。」...数据输出 或者叫数据展示或者下载,数据经二进制处理后可以由 url 表示,然后通过 image, video 等元素引用或者直接下载。 Data URL Data URL 即 Data As URL

    1.1K10

    文件下载,搞懂这9种场景就够了

    1.2 了解 Blob URL Blob URL/Object URL 一种伪协议,允许 Blob 和 File 对象用作图像、下载二进制数据链接等 URL 源。...因此,此类 URL 较短,但可以访问 Blob。生成 URL 仅在当前文档打开状态下才有效。...此外,该属性作用是表明链接资源将被下载不是显示在浏览器中。...因为返回 base64 格式图片,所以在调用 FileSaver 提供 saveAs 方法前,我们需要将 base64 字符串转换成 blob 对象,该转换通过以下 base64ToBlob...在该函数内部,我们会使用 Fetch API 来执行下载操作。因为服务端数据是以一系列分块形式进行发送,所以在浏览器端我们通过流形式进行接收。

    3K10

    HTTP实用指南 - 笔记

    HTTP 头) 无状态 # 协议分析 # HTTP 协议发展历史 协议版本 简介 内容 HTTP/0.9 单行协议 请求只有 GET,响应只有 HTML 文档 HTTP/1.0 构建可扩展性 增加了...Header,有了状态码,开始支持多种文档类型 HTTP/1.1 标准化协议 链接复用,缓存,内容协商 HTTP/2 更优异表现 二进制协议,压缩 Header,服务器推送 HTTP/3 草案 未来协议...Found - 请求资源不存在,可能输入了错误 URL 500 - 服务器内部发生了不可预期错误 504 Gateway Timeout - 网关或者代理服务器无法在规定时间内获得想要响应...客户端通过 HTTP Method,服务器资源进行操作,实现 “表现层状态转化” # 常用请求头 Accept 接收类型,表示浏览器支持 MIME 类型 (标服务端返回 Content-Type...服务器端允许请求 Origin 头部(譬如为 *) # 缓存控制 # Cookie Cookie 呈键值出现,具体键值信息如下: Name=value 各种 cookie 名称和值

    83020
    领券