我在字符串中有base64编码的二进制数据.
const contentType = 'image/png';
const b64Data = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
Run Code Online (Sandbox Code Playgroud)
我想创建一个blob:包含此数据的URL并将其显示给用户.
const blob = new Blob(????, {type: contentType});
const blobUrl = URL.createObjectURL(blob);
window.location = blobUrl;
Run Code Online (Sandbox Code Playgroud)
我还没有弄清楚如何创建Blob.
在某些情况下,我可以通过使用data:URL 来避免这种情况.
const dataUrl = `data:${contentType};base64,${b64Data}`;
window.location = dataUrl;
Run Code Online (Sandbox Code Playgroud)
但是在大多数情况下,data:URL非常大.
如何Blob在JavaScript中将base64字符串解码为对象?
"data:"URL方案值是否有任何大小限制?我对流行的网络浏览器的局限感兴趣.换句话说,多久可以data:image/jpg;base64,base64_encoded_data成为<img src="data:image/jpg;base64,base64_encoded_data" />或background-image: url(data:image/jpg;base64,base64_encoded_data)?
我使用base64编码格式和AES加密加密了一个视频文件.我逐流解密数据并附加/写入每个流(作为.mp4文件)以实现最终视频,但是需要花费大量时间来实现最终输出.
主要编辑:
我找到了资源html5-media-and-data-uri,它有助于播放a中的数据webview,但它不播放2,000,000+ base64字符的视频.
使用base64数据解密文件并在Web视图中初始化HTML代码的功能
decryptfile() {
RNFetchBlob.fs
.readStream(
RNFetchBlob.fs.dirs.DCIMDir + "/encryptfile1.dat",
"base64",
2796256, //character to be read at a time for decryption
2500 // Time taken before each stream enters for decryption
)
.then(stream => {
let data = "";
stream.open();
stream.onData(chunk => {
var decipherText = simpleCrypto.decrypt(chunk.toString()); // Decryption
decryptText = decryptText + decipherText; // appending decrypted data
});
stream.onEnd(() => {
htmlCode =
`<html>
<body>
<video style="width: 50%; height: 50%; margin-top: 10%; margin-left: …Run Code Online (Sandbox Code Playgroud)