将POST响应另存为NativeScript中的文件

将POST响应另存为NativeScript中的文件,nativescript,Nativescript,在我的NativeScript Vue应用程序中,我向服务器发出POST请求,并收到一个二进制文件。它是一个.zip文件,包含一个.db文件,我想用nativescript sqlite插件复制并初始化该文件 我使用的是axios,POST响应如下所示: "PK {[oP'g�R 606.db�}`�����ו�N�-{�*�*�O炵W$�滓\(��t�KZ��dc2�e�C�Ĕ$�L >b!��... and so on 现在我正在Android上测试。我正在将文件保存到An

在我的NativeScript Vue应用程序中,我向服务器发出POST请求,并收到一个二进制文件。它是一个.zip文件,包含一个.db文件,我想用nativescript sqlite插件复制并初始化该文件

我使用的是axios,POST响应如下所示:

"PK  {[oP'g�R     606.db�}`�����ו�N�-{�*�*�O炵W$�滓\(��t�KZ��dc2�e�C�Ĕ$�L
>b!��... and so on
现在我正在Android上测试。我正在将文件保存到Android下载文件夹,看看是否可以解压缩它。我知道
File.write
接受本机字节数组,所以我试图从二进制文件字符串中获取一个

import*作为fs从“tns核心模块/文件系统”导入;
异步函数saveToFile(binary){//binary=“PK{[oP'g�R
让folder=fs.folder.fromPath(android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_下载).getAbsolutePath());
让zipFile=folder.getFile(“Database.zip”);
//字符串到缓冲区
let buffer=new ArrayBuffer(binary.length);
让视图=新的UINT8阵列(缓冲区);
for(设i=0;i

我认为我做错了,循环数组两次,无论如何,我可以编写文件,但无法以.zip格式打开。有什么帮助吗?

解决了从axios切换到NativeScript HTTP模块的问题,直接处理文件对象而不是字符串

从“tns核心模块/http”导入{getFile};
从“nativescript Zip”导入{Zip};
异步函数saveDatabaseToFile(){
让folder=fs.knownFolders.temp();
让zipFile=wait getFile({
方法:“POST”、//url、标题、内容
});
wait file.rename(“Database.zip”);//扩展出错
等待Zip.unzip({
存档:file.path,
目录:folder.path
});
let files=wait folder.getEntities();
让dbFile=files.find(file=>file.\u扩展名==“.db”);
返回数据库文件;
}

有一个用于zip和解压的插件,我确信该插件的工作原理与我以前使用的一样。你可以尝试一下-是的,我在保存文件后使用它,但它会引发一个错误,因为下载的二进制文件处理不正确。我现在面临的问题是写入数据。为什么不直接将二进制文件写入文件,然后解压。如果你仍然使用它,那么如果有问题,请共享一个可以复制该问题的游乐场示例。直接写入二进制文件(
zipFile.writeSync(binary,onError())
)抛出错误:java.lang.Exception:未能解析类java.io.FileOutputStream上的方法写入错误不完整,可能是任何错误。输入无效或路径/没有写入权限,这就是我请求示例项目的原因。否则很难调试。