plus.io.resolveLocalFileSystemURL('_doc/', function(entry) {
//创建音频保存文件夹
entry.getDirectory('audio2', {
create: true
}, function(entry1) {
console.log("创建音频文件夹成功" + entry1);
// 获得音频绝对路径
var fullPath = entry.fullPath;
entry1.getFile(fullPath+audioName,{create:true},function(entry2){
console.log("创建音频文件成功" + entry2);
if(mui.os.android){
// 读取音频
var Base64 = plus.android.importClass("java.util.Base64");
var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");
try{
var out = new FileOutputStream(entry2.fullPath);
var decoder=Base64.getDecoder();
var bytes= decoder.decode(base64Str);//这里总是为null,有时候可以获取,不知道为什么
out.write(bytes);
out.close();
console.log("写入数据完成");
// 回调
callback && callback(entry2);
}catch(e){
console.log(e);
}
}else if(mui.os.ios){
var NSData = plus.ios.importClass('NSData');
var nsData = new NSData();
nsData = nsData.initWithBase64EncodedStringoptions(base64Str,0);
if (nsData) {
nsData.plusCallMethod({writeToFile: fullPath,atomically:true});
plus.ios.deleteObject(nsData);
}
// 回调
callback && callback(entry);
}
},function(e){
console.log("create file error:",e);
})
}, function(e) {
console.log('Get directory "audio" failed: ' + e.message);
});
}, function(e) {
console.log('Resolve "_doc/" failed: ' + e.message);
});
改编自Dcloud的一个案例,我想问为什么不能获取解码后的字节;很急啊。
2 个回复
小权
同问。解决了吗?
小权
https://ask.dcloud.net.cn/question/93515