是否可以将 blob 文件转换为 Javascript(Ionic,Angular)中的 base64Data?
Is it possible to convert a blob file into a base64Data in Javascript (Ionic,Angular)?
[
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 library. Using the downloadZip() I am getting a zip blob file like this 将文本文件压缩为 zip blob 文件。
我想使用 Capacitor Filesharer 将此文件作为 zip 文件共享。但是要使用这个 Filesharer 插件,我似乎必须将这个 blob zip 文件转换为 base64 数据。
谁能告诉我怎么做??或者甚至可以这样做吗??
如果您觉得我的问题太不成熟,请原谅我,因为正如我所说,我对 javascript 还很陌生。
考虑使用以下函数:
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);
})
}
尝试修改您的代码,如下所示:(没有更改之前的答案,因为它可能对其他人使用 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",
})
}
你可以试试这个代码-
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'
});
}
}
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 library. Using the downloadZip() I am getting a zip blob file like this 将文本文件压缩为 zip blob 文件。 我想使用 Capacitor Filesharer 将此文件作为 zip 文件共享。但是要使用这个 Filesharer 插件,我似乎必须将这个 blob zip 文件转换为 base64 数据。 谁能告诉我怎么做??或者甚至可以这样做吗??
如果您觉得我的问题太不成熟,请原谅我,因为正如我所说,我对 javascript 还很陌生。
考虑使用以下函数:
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);
})
}
尝试修改您的代码,如下所示:(没有更改之前的答案,因为它可能对其他人使用 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",
})
}
你可以试试这个代码-
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'
});
}
}