txt文件写入字符串是没问题的,换成pdf,写入二进制数据就不行了,异常里是null,有大佬知道如何解决吗?
代码片段如下:
if (res && res.data instanceof ArrayBuffer) {
// await this.validatePDF(res.data)/* */
console.log('获取到的二进制数据:', res.data);
const fileName = 'downloadedFile.pdf';
const filePath = `_doc/${fileName}`;
plus.android.requestPermissions(
['android.permission.WRITE_EXTERNAL_STORAGE'],
(result) => {
console.log('存储权限请求结果:', result);
if (result.granted) {
plus.io.resolveLocalFileSystemURL('_doc/', (entry) => {
console.log('目录入口:', entry);
entry.getFile(fileName, {
create: true
}, (fileEntry) => {
console.log('获取到的文件条目:', fileEntry);
console.log('fileEntry 名称:', fileEntry.name);
console.log('fileEntry 路径:', fileEntry.fullPath);
console.log('是否为文件:', fileEntry.isFile);
console.log('是否为目录:', fileEntry.isDirectory);
fileEntry.createWriter(
(writer) => {
console.log('Writer 创建成功:', writer);
writer.onerror = (err) => {
console.error('文件写入失败:', err);
};
writer.onwriteend = () => {
console.log('写入操作已完成');
};
// console.log(new Uint8Array(res.data)); //二进制
// const binaryData = new Uint8Array(res.data);
const binaryData = new Uint8Array(res.data);
// console.log(binaryData);
try {
// console.log(binaryData);
console.log('开始写入内容...');
writer.write(binaryData);
// writer.writeAsBinary(binaryData)
} catch (e) {
console.error('写入异常:', e);
}
writer.onwrite = () => {
console.log('文件写入成功:', fileEntry
.fileName);
// 获取本地路径
const localFilePath = plus.io
.convertLocalFileSystemURL(
fileEntry.fullPath);
console.log('本地文件路径:', localFilePath);
// 打开文件
uni.openDocument({
filePath: localFilePath,
showMenu: true,
success: function() {
console.log(
'打开文档成功');
},
fail: function(err) {
console.error(
'打开文档失败:',
err);
},
});
};
},
(error) => {
console.error('创建 Writer 失败:', error);
}
);
});
});
} else {
console.error('存储权限请求失败');
this.$showToast('权限请求失败');
}
},
(err) => {
console.error('存储权限请求失败:', err);
this.$showToast('权限请求失败');
}
);
} else {
console.error('未获取到有效的二进制数据');
this.$showToast('文件下载失败');
}
0 个回复