为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以将 blob 文件转换为 Javascript中的 base64Data?

是否可以将 blob 文件转换为 Javascript中的 base64Data?

当年话下 2023-03-10 13:19:20
async FileZip() {    const code = await fetch("./assets/input.txt")    var blob = await downloadZip([code]).blob()     console.log(blob);    function blobToBase64(blob: Blob): Observable<string> {      return new Observable<string>(observer => {          const reader = new FileReader();         reader.onerror = observer.error;          reader.onabort = observer.error;          reader.onload = () =>                     observer.next(reader.result as string);          reader.onloadend = observer.complete;    FileSharer.share({      filename: "input.zip",      base64Data: //base64datawillbehere ,      contentType: 'application/zip'    });    reader.readAsDataURL(blob);  })我对 Ionic 和应用程序开发还很陌生。我使用client-zip库将文本文件压缩为 zip blob 文件。使用 downloadZip() 我得到了一个 像这样的zip blob 文件。我想使用Capacitor Filesharer将此文件作为 zip 文件共享。但是要使用这个 Filesharer 插件,我似乎必须将这个 blob zip 文件转换为 base64 数据。谁能告诉我怎么做??或者甚至有可能做到这一点?如果您发现我的问题太不成熟,请原谅我,因为正如我所说,我对 javascript 还很陌生。
查看完整描述

3 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

考虑使用以下函数:


function blobToBase64(blob: Blob): Observable<string> {

    return new Observable<string>(observer => {

        const reader = new FileReader();

        reader.onerror = observer.error;

        reader.onabort = observer.error;

        reader.onload = () => observer.next(reader.result as string);

        reader.onloadend = observer.complete;

        reader.readAsDataURL(blob);

    })

}


查看完整回答
反对 回复 2023-03-10
?
慕斯王

TA贡献1864条经验 获得超2个赞

尝试修改您的代码,如下所示:(没有更改之前的答案,因为它可能对其他人使用Observable策略实现此类操作很有用,这与我建议使用Promise的情况不同)


ngOnInit(): void {

  this.fileZip();

}


private blobToBase64(blob: Blob): Promise<string> {

  return new Promise((resolve, reject) => {

    const reader = new FileReader();

    reader.onerror = reject;

    reader.onabort = reject;

    reader.onload = () => resolve(reader.result as string);

    reader.readAsDataURL(blob);

  })

}


private async fileZip(): Promise<void> {

  const code = await fetch("./assets/input.txt")

  const blob = await downloadZip([code]).blob();

  const base64Data = await this.blobToBase64(blob);

  await FileSharer.share({

    filename: "input.zip",

    base64Data: base64Data,

    contentType: "application/zip",

  })

}


查看完整回答
反对 回复 2023-03-10
?
皈依舞

TA贡献1851条经验 获得超3个赞

你可以试试这个代码 -


fileZip() {

constcode = awaitfetch("./assets/input.txt");

varblob = awaitdownloadZip([code]).blob()

console.log(blob);

varreader = newFileReader();

reader.readAsDataURL(blob); 

reader.onloadend = ()=> {

constresult = reader.resultasstring;

constbase64Data = result.split(',')[1];

console.log(base64Data)

FileSharer.share({

filename:"json.zip",

base64Data,

contentType:'application/zip'

    });

  }

}


查看完整回答
反对 回复 2023-03-10
  • 3 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号