首页
学习
活动
专区
工具
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请求是被允许的。...,意思就是在多少秒以内,我们设置的这些允许的请求头,请求方法,是不需要发送预请求验证的,直接就可以通过,并发送。

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

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

    5.2K42

    MinIO 分片上传

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

    4.3K30

    具有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.6K10

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

    函数 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.8K40

    利用 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)解释型语言使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。

    54240

    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡

    实战开始这是官网, 登录下载和安装就不用讲了吧,这个比较easy,然后对于api的接口请求,主要有以下方式,基础知识放这给大家看下API接口主要的请求方式API 请求的主要方式包括以下几种:GET 请求...请求的数据通常附加在 URL 后面。GET 请求是幂等的,意思是无论调用多少次,结果都是相同的。示例:GET /api/usersPOST 请求:用于向服务器发送数据,通常用于提交表单或上传文件。...PATCH 请求不是幂等的,意思是结果可能会因多次调用而不同。...通常用于跨域请求的预检。...Request Method:选择请求方法,如 GET、POST、PUT、DELETE、PATCH 等。Params:查询参数,可以在 URL 中添加键值对,常用于 GET 请求。

    11310

    【笔记】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.3K20

    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。

    4K130

    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

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

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

    3.1K10

    谁说前端不需要懂二进制

    从前后端整体上来说前端代表 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
    领券