h5+ 地址 html5plus
以csv文件为例,写入读取保存修改删除文件内容,传输文件等
1.save 文件保存
typescript
function saveCsv(data,pathP,path){
// #ifdef APP-PLUS
return new Promise((resolve, reject) => {
plus.io.requestFileSystem( plus.io.PUBLIC_DOCUMENTS, function( fs ) {
// 通过fs.root获取DirectoryEntry对象进行操作
fs.root.getDirectory(pathP,{create:true},direEntry =>{
plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, fs => {
fs.root.getFile(path, {create: true}, fileEntry => {
fileEntry.createWriter(writer => {
writer.onwrite = e => {
resolve(`file://${e.target.fileName}`);
// uni.showModal({
// title: '提示',
// content: `导出成功,文件路径为${e.target.fileName.replace('/storage/emulated/0', '')}`,
// cancelText: '了解并关闭',
// confirmText: '预览文件',
// success: result => {
// if (result.confirm) {
// uni.openDocument({
// filePath: `file://${e.target.fileName}`,
// })
// }
// }
// });
}
writer.write(data);
}, writerErr => {
resolve(500)
uni.showToast({
title: '导出文件失败,请检查是否有权限',
icon: 'none'
});
})
})
})
})
}, fsErr => {
uni.showToast({
title: '导出文件失败,请检查是否有权限',
icon: 'none'
});
})
})
// #endif
}
// #ifdef APP-PLUS
let submitCsv = savedata.map(e=> JSON.stringify(e)).join("\n");
saveCsv(submitCsv,`${user}/triallist/${_this.trialId}`,`${user}/triallist/${_this.trialId}/scoresubmit.csv`).then(path=>{
console.log(path)
})
// #endif
2. read 读取
typescript
function readListCsv(path){
let reader = null;
let data=[];
// #ifdef APP-PLUS
return new Promise((resolve, reject) => {
plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS,fs => {
fs.root.getFile(path,{create:true},fileEntry=> {
fileEntry.file( function ( file ) {
reader = new plus.io.FileReader();
reader.onloadend = function ( e ) {
if(e.target.result){
//返回的data处理取决于存入时的操作,不同格式不同操作
data = e.target.result.split('\n').map(e=> JSON.parse(e))
resolve(data);
}else{
data = []
resolve(data);
}
};
reader.readAsText( file );
}, function ( e ) {
uni.showToast({
title: e.message,
icon: 'none'
});
});
})
})
})
// #endif
}
// #ifdef APP-PLUS
//自定义文件路径
readListCsv(`${user}/triallist/${this.trialId}/time.csv`).then(res=>{
console.log(res)
})
3. delete 删除目录
typescript
//已存在目录,删除重建
let path = uni.getStorageSync('path') + `/${user}/triallist/${_this.trialId}`;
plus.io.resolveLocalFileSystemURL(path, function( entry ) {
let directoryReader = entry.createReader(); //获取读取目录对象
directoryReader.readEntries( function( entries ){
console.log(entries.length);
if (entries.length > 0) {
entry.removeRecursively(function(entry) {
callback();
//删除成功回调---获取不到。。。。
}, function(e) {
//错误信息
console.log(e.message + ' ?!')
})
}
})
})
4.upload 上传(uniapp)循环上传目录内文件
typescript
// #ifdef APP-PLUS
//使用uniapp上传需要上传文件获取uniapp生成的路径后,调用上传接口
updateResume(){
let path = uni.getStorageSync('path') + `/${user}/triallist/${this.trialId}/......`
plus.io.resolveLocalFileSystemURL(path, function( entry ) {
var directoryReader = entry.createReader(); //获取读取目录对象
directoryReader.readEntries( function( entries ){
for(let i=0; i < entries.length; i++ ){
uni.saveFile({
tempFilePath: path + entries[i].name,
success: function (res) {
uni.uploadFile({
url:NEV.BASE_URL +'/api/api..../add',
filePath:res.savedFilePath,
header: {
'X-Access-Token':uni.getStorageSync('token'),
'Authorization': 'Bearer ' + uni.getStorageSync('token'),
"Content-Type": "multipart/form-data",
},
name:'MultipartFile',
formData: { //接口携带的参数
trialId:_this.trialId,
},
success() {
console.log('一个文件上传成功');
},
fail() {
console.log('一个文件上传失败');
}
})
},
fail() {
console.log('一个文件上传失败');
}
});
console.log( entries[i].name );
}
}, function ( e ) {
alert( "Read entries failed: " + e.message );
} );
});
// #endif
}