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

http://img3.mukewang.com/640abe340001febc06540135.jpg

http://img4.mukewang.com/640abe3c0001380604610083.jpg

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 还很陌生。



当年话下
浏览 144回答 3
3回答

POPMUISE

考虑使用以下函数:function blobToBase64(blob: Blob): Observable<string> {&nbsp; &nbsp; return new Observable<string>(observer => {&nbsp; &nbsp; &nbsp; &nbsp; const reader = new FileReader();&nbsp; &nbsp; &nbsp; &nbsp; reader.onerror = observer.error;&nbsp; &nbsp; &nbsp; &nbsp; reader.onabort = observer.error;&nbsp; &nbsp; &nbsp; &nbsp; reader.onload = () => observer.next(reader.result as string);&nbsp; &nbsp; &nbsp; &nbsp; reader.onloadend = observer.complete;&nbsp; &nbsp; &nbsp; &nbsp; reader.readAsDataURL(blob);&nbsp; &nbsp; })}

慕斯王

尝试修改您的代码,如下所示:(没有更改之前的答案,因为它可能对其他人使用Observable策略实现此类操作很有用,这与我建议使用Promise的情况不同)ngOnInit(): void {&nbsp; this.fileZip();}private blobToBase64(blob: Blob): Promise<string> {&nbsp; return new Promise((resolve, reject) => {&nbsp; &nbsp; const reader = new FileReader();&nbsp; &nbsp; reader.onerror = reject;&nbsp; &nbsp; reader.onabort = reject;&nbsp; &nbsp; reader.onload = () => resolve(reader.result as string);&nbsp; &nbsp; reader.readAsDataURL(blob);&nbsp; })}private async fileZip(): Promise<void> {&nbsp; const code = await fetch("./assets/input.txt")&nbsp; const blob = await downloadZip([code]).blob();&nbsp; const base64Data = await this.blobToBase64(blob);&nbsp; await FileSharer.share({&nbsp; &nbsp; filename: "input.zip",&nbsp; &nbsp; base64Data: base64Data,&nbsp; &nbsp; contentType: "application/zip",&nbsp; })}

皈依舞

你可以试试这个代码 -fileZip() {constcode = awaitfetch("./assets/input.txt");varblob = awaitdownloadZip([code]).blob()console.log(blob);varreader = newFileReader();reader.readAsDataURL(blob);&nbsp;reader.onloadend = ()=> {constresult = reader.resultasstring;constbase64Data = result.split(',')[1];console.log(base64Data)FileSharer.share({filename:"json.zip",base64Data,contentType:'application/zip'&nbsp; &nbsp; });&nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript