请教如何在获取fetch response.text()之后转为blob
本帖最后由 asdfxed 于 2022-12-30 11:11 编辑在某些特殊情况下, 我只能获取`text`, 但是后续我需要转为`blob`或者`arraybuffer`, 请问如何处理呢
测试脚本如下, 需要实现的是打开页面`https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png`之后, 下载的图片是和网页显示的一样, 而目前脚本下载的图片是无效的
```
// ==UserScript==
// @name 测试fetch
// @namespace http://tampermonkey.net/
// @version 0.1
// @descriptiontry to take over the world!
// @author You
// @match https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png
// @icon https://www.google.com/s2/favicons?sz=64&domain=baidu.com
// @grant none
// ==/UserScript==
fetch('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')
.then(res=>res.text()) // 这里不能改, 只能res.text()
.then(text=>{
// 可修改区域开始
let blob = new Blob();
// 可修改区域结束
// 下面只是测试导出图片是否正确
const a = document.createElement("a");
const objectUrl = window.URL.createObjectURL(blob);
a.download = '测试图片.jpg';
a.href = objectUrl;
a.click();
window.URL.revokeObjectURL(objectUrl);
a.remove();
}).catch(e=>{console.log(e);});
` fetch('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')
.then(res=>res.blob()) steven026 发表于 2022-12-30 10:24
不能改这里, 只能res.text() 不太理解为啥不能动其他函数... 李恒道 发表于 2022-12-30 14:45
不太理解为啥不能动其他函数...
就某些特殊限制, 只能获取res.text(){:4_88:} asdfxed 发表于 2022-12-30 15:16
就某些特殊限制, 只能获取res.text()
这个帮不到哥哥了...
直觉来说可能图片转成text的时候已经造成字符损坏了吧...
对编码不太熟悉{:4_115:} 李恒道 发表于 2022-12-30 16:57
这个帮不到哥哥了...
直觉来说可能图片转成text的时候已经造成字符损坏了吧...
对编码不太熟悉 ...
没事, 我更不熟悉哈哈{:4_106:} 图片转字符串以后会对字节流造成不可逆的破坏,原因是utf8编码过程中,一些不同的字节会被转换成相同的结果,比如你输出text的话可以看到一堆�,这些�实际上是不同的,在utf8编码下被视为相同,这导致转换过程不可逆。 cxxjackie 发表于 2022-12-31 12:19
图片转字符串以后会对字节流造成不可逆的破坏,原因是utf8编码过程中,一些不同的字节会被转换成相同的结果 ...
已经造成了不可逆的破坏,为什么还要去想着修复?
这个帖子看了好几遍了,// 这里不能改, 只能res.text(),为什么不能改呀大佬们都不理解,这是硬生生被尿憋死的姿势。
@cxxjackie 哥哥龙体无恙否,几天不看你发言还以为你像李恒道一样哈勒西了 脚本体验师001 发表于 2022-12-31 13:35
已经造成了不可逆的破坏,为什么还要去想着修复?
这个帖子看了好几遍了,// 这里不能改, 只能res.text() ...
没阳,只是感冒了,而且论坛这几天没什么贴子啊。
页:
[1]
2