在浏览器端的javascript中完全有可能。
简单的方法:
该readAsDataURL()方法可能已经对其进行编码为base64为您服务。您可能需要删除开始的内容(直到第一个,),但这没什么大不了的。这将带走所有的乐趣。
困难的方法:
如果您想尝试一下困难的方法(或者不起作用),请参阅
readAsArrayBuffer()。这将为您提供一个Uint8Array,您可以使用指定的方法。仅在您想弄乱数据本身(例如在上载之前处理图像数据或进行其他伏都教具魔术)时,这才可能有用。
有两种方法:
- 转换为字符串并使用内置的
btoa
或类似的- 我还没有测试所有情况,但是对我有用-只需获取字符代码
- 直接从Uint8Array转换为base64
我现在应该做什么:
从Uint8Array转换为字符串的代码非常简单(其中buf是Uint8Array):
function uint8ToString(buf) { var i, length, out = ''; for (i = 0, length = buf.length; i < length; i += 1) { out += String.fromCharCode(buf[i]); } return out;}从那里开始:
var base64 = btoa(uint8ToString(yourUint8Array));
base64现在将是一个以base64编码的字符串,它应该仅上载桃子。如果要在推送之前仔细检查,请尝试以下操作:
window.open("data:application/octet-stream;base64," + base64);这会将其下载为文件。



