【发布时间】:2021-05-04 09:14:09
【问题描述】:
我想使用 fileSaver.js 单击按钮并保存 二进制 blob(类型:“application/octet-stream”)。 但我不知道如何按照我需要的方式保存 blob。
最终文件(example.mod)需要有以下顺序:
-
8(下次和平信息的字节数,整数) -
<POINTS>(8个字符的标签名) -
3(点数) -
[A,10.5,10,10](一个点:一个包含一个字母和3个浮点数的数组) -
[B,20,10,0.7](一个点:一个包含一个字母和3个浮点数的数组) -
[C,10,20.3,10](一个点:一个包含一个字母和3个浮点数的数组) -
9(下次和平信息的字节数,整数) -
</POINTS>(9个字符的标签名)
我找到了一些保存“text/plain”或“image/png”的示例,但我无法弄清楚如何在我的情况下应用。
我已经制作了这个CodePen,显示了我正在尝试做的事情,但生成的文件不是预期的! 它返回一个类似的文件(所有信息都像文本文件一样可见):
8<POINTS>3A,10.5,10,10B,20,10,0.7C,10,20.3,109</POINTS>
...但我想得到的是用字节写的文件,像这样(在文本编辑器中查看时):
...或者当它作为 ArrayBuffer 读取时,我应该得到类似这样的结果:
Int8Array(119)[
0: 0
1: 0
2: 0
3: 8
4: 60
5: 80
6: 79
7: 73
8: 78
9: 84
10: 83
11: 62
12: 3
13: 0
14: 0
15: 0
16: 2
17: 0
18: 0
19: 0
20: 1
21: 65
22: 0
23: 0
24: 0
25: 0
26: 0
27: 0
28: 37
29: 64
30: 0
31: 0
32: 0
33: 0
34: 0
35: 0
36: 36
37: 64
38: 0
39: 0
40: 0
41: 0
42: 0
43: 0
44: 36
45: 64
46: 2
47: 0
48: 0
49: 0
50: 1
51: 66
52: 0
53: 0
54: 0
55: 0
56: 0
57: 0
58: 52
59: 64
60: 0
61: 0
62: 0
63: 0
64: 0
65: 0
66: 36
67: 64
68: 102
69: 102
70: 102
71: 102
72: 102
73: 102
74: -26
75: 63
76: 2
77: 0
78: 0
79: 0
80: 1
81: 67
82: 0
83: 0
84: 0
85: 0
86: 0
87: 0
88: 36
89: 64
90: -51
91: -52
92: -52
93: -52
94: -52
95: 76
96: 52
97: 64
98: 0
99: 0
100: 0
101: 0
102: 0
103: 0
104: 36
105: 64
106: 0
107: 0
108: 0
109: 9
110: 60
111: 47
112: 80
113: 79
114: 73
115: 78
116: 84
117: 83
118: 62
]
PS:如果您知道如何在不使用 filesaver.js 的情况下获得这些结果,那也适用于我。
任何帮助将不胜感激!
谢谢。
【问题讨论】:
-
我正在尝试在创建 blob 之前使用 Arraybuffer e 类型的数组准备数据,但到目前为止没有成功。真的迷路了! :(
标签: javascript save blob filesaver.js