提交 4f1c2664 编写于 作者: taohebin@dcloud.io's avatar taohebin@dcloud.io

fix: filemanager换成extapi的实现

上级 2800e9de
...@@ -115,13 +115,12 @@ ...@@ -115,13 +115,12 @@
}); });
}, },
goDetail(e: Item) { goDetail(e: Item) {
console.log("eeee",e);
const detail = e; const detail = e;
const post_id = detail.post_id; const post_id = detail.post_id;
const cover = detail.cover; const cover = detail.cover;
const title = detail.title; const title = detail.title;
uni.navigateTo({ uni.navigateTo({
url: 'pages/component/list/detail/detail?post_id=' + post_id + "&cover=" + cover + "&title=" + title url: '/pages/component/list/detail/detail?post_id=' + post_id + "&cover=" + cover + "&title=" + title
}); });
}, },
bannerClick(e:Banner){ bannerClick(e:Banner){
...@@ -130,7 +129,7 @@ ...@@ -130,7 +129,7 @@
const cover = detail.cover; const cover = detail.cover;
const title = detail.title; const title = detail.title;
uni.navigateTo({ uni.navigateTo({
url: 'pages/component/list/detail/detail?post_id=' + post_id + "&cover=" + cover + "&title=" + title url: '/pages/component/list/detail/detail?post_id=' + post_id + "&cover=" + cover + "&title=" + title
}); });
}, },
setTime(items: UTSJSONObject): Item[] { setTime(items: UTSJSONObject): Item[] {
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
</template> </template>
<script> <script>
import { readFile, ReadFileOptions,ReadFileSuccessResult } from '@/uni_modules/uts-file-manager';
type Item = { type Item = {
title: string title: string
subTitle: string, subTitle: string,
...@@ -47,9 +46,10 @@ import { readFile, ReadFileOptions,ReadFileSuccessResult } from '@/uni_modules/u ...@@ -47,9 +46,10 @@ import { readFile, ReadFileOptions,ReadFileSuccessResult } from '@/uni_modules/u
}, },
methods: { methods: {
getList() { getList() {
readFile({ const fileManager = uni.getFileSystemManager()
type:'text', fileManager.readFile({
path:'static/list-mock/mock.json', encoding:'utf-8',
filePath:'static/list-mock/mock.json',
success:function(result:ReadFileSuccessResult){ success:function(result:ReadFileSuccessResult){
const content = result.content; const content = result.content;
if (content != null){ if (content != null){
...@@ -86,7 +86,7 @@ import { readFile, ReadFileOptions,ReadFileSuccessResult } from '@/uni_modules/u ...@@ -86,7 +86,7 @@ import { readFile, ReadFileOptions,ReadFileSuccessResult } from '@/uni_modules/u
}, },
goDetail(e: Item) { goDetail(e: Item) {
uni.navigateTo({ uni.navigateTo({
url: 'pages/component/long-list/detail/detail?content=' + e.detail url: '/pages/component/long-list/detail/detail?content=' + e.detail
}); });
}, },
onRefresherrefresh() { onRefresherrefresh() {
......
{
"id": "uts-file-manager",
"displayName": "uts-file-manager",
"version": "1.0.0",
"description": "uts-file-manager",
"keywords": [
"uts-file-manager"
],
"repository": "",
"engines": {
"HBuilderX": "^3.6.8"
},
"dcloudext": {
"type": "uts",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "",
"data": "",
"permissions": ""
},
"npmurl": ""
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "u",
"aliyun": "u"
},
"client": {
"Vue": {
"vue2": "u",
"vue3": "u"
},
"App": {
"app-android": "u",
"app-ios": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}
\ No newline at end of file
# uts-file-manager
### 开发文档
[UTS 语法](https://uniapp.dcloud.net.cn/tutorial/syntax-uts.html)
[UTS API插件](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html)
[UTS 组件插件](https://uniapp.dcloud.net.cn/plugin/uts-component.html)
[Hello UTS](https://gitcode.net/dcloud/hello-uts)
\ No newline at end of file
import { ReadFileSuccessResult, ReadFileFailResult, ReadFile,ReadFileOptions } from "../interface.uts"
import { WriteFileSuccessResult, WriteFileFailResult, WriteFile,WriteFileOptions } from "../interface.uts"
import File from "java.io.File"
import UTSAndroid from 'io.dcloud.uts.UTSAndroid';
import Base64 from "android.util.Base64"
import Environment from 'android.os.Environment';
export { ReadFileOptions, WriteFileOptions } from "../interface.uts"
/**
* 获取文件内容
*/
export const readFile : ReadFile = function (options : ReadFileOptions) {
// 判断type 是否合法
if(options.type != 'base64' && options.type != 'text'){
let ret : ReadFileFailResult = {
errCode: -1,
errMsg: "type error.",
errSubject: "uni-getFileContent"
}
UTSAndroid.dispatchAsync("dom",(_)=>{
options.fail?.(ret)
options.complete?.(ret)
}, null)
return
}
/**
* 执行真正的加载行为,为了避免阻塞分发到 io任务序列
*/
UTSAndroid.dispatchAsync('io',function(_){
let filePath = UTSAndroid.convert2AbsFullPath(options.path)
let targetFile = new File(filePath)
if (!targetFile.exists()) {
let ret : ReadFileFailResult = {
errCode: -2,
errMsg: "file not found.",
errSubject: "uni-getFileContent"
}
UTSAndroid.dispatchAsync("dom",(_)=>{
options.fail?.(ret)
options.complete?.(ret)
}, null)
return
}
if (targetFile.isDirectory()) {
let ret : ReadFileFailResult = {
errCode: -3,
errMsg: "error:file is a Directory.",
errSubject: "uni-getFileContent"
}
UTSAndroid.dispatchAsync("dom",(_)=>{
options.fail?.(ret)
options.complete?.(ret)
}, null)
return
}
/**
* 文件超过16M,会超过应用内存
*/
if (targetFile.length() > 16 * 1024 * 1024) {
let ret : ReadFileFailResult = {
errCode: -3,
errMsg: "error:file is bigger than 16M",
errSubject: "uni-getFileContent"
}
UTSAndroid.dispatchAsync("dom",(_)=>{
options.fail?.(ret)
options.complete?.(ret)
}, null)
return
}
if(options.type == 'base64'){
// base64
let byteArray = targetFile.readBytes()
let base64Content = Base64.encodeToString(byteArray,Base64.NO_WRAP)
let ret : ReadFileSuccessResult = {
content: base64Content,
}
UTSAndroid.dispatchAsync("dom",(_)=>{
options.success?.(ret)
options.complete?.(ret)
}, null)
}else{
// text
let text = targetFile.readText()
let ret : ReadFileSuccessResult = {
content: text
}
UTSAndroid.dispatchAsync("dom",(_)=>{
options.success?.(ret)
options.complete?.(ret)
}, null)
}
},null)
}
/**
* 获取文件内容
*/
export const writeFile : WriteFile = function (options : WriteFileOptions) {
// 判断type 是否合法
let nextFile = new File(UTSAndroid.getAppContext()?.getFilesDir(),options.path)
console.log(nextFile.getPath())
if(nextFile.exists() && nextFile.isDirectory()){
// 出错了,目标文件已存在,并且是个目录
let ret : WriteFileFailResult = {
errCode: -2,
errMsg: "file exist and is a directory.",
errSubject: "uni-writeFile"
}
UTSAndroid.dispatchAsync("dom",(_)=>{
options.fail?.(ret)
options.complete?.(ret)
}, null)
return
}
UTSAndroid.dispatchAsync('io',function(_){
/**
* 如果上一级目录不存在,创建之
*/
if(!nextFile.parentFile.exists()){
nextFile.parentFile.mkdirs()
}
if(!nextFile.exists()){
nextFile.createNewFile()
}
// 写入文本,暂时只支持覆盖写入
nextFile.writeText(options.content)
let ret : WriteFileSuccessResult = {
filePath: nextFile.getPath()
}
UTSAndroid.dispatchAsync("dom",(_)=>{
options.success?.(ret)
options.complete?.(ret)
}, null)
},null)
}
export type ReadFileSuccessResult = {
content : string
}
export type ReadFileFailResult = {
/**
* 错误码
*/
errCode : number,
/**
* 调用API的名称
*/
errSubject : string,
/**
* 错误的详细信息
*/
errMsg : string,
}
export type ReadFileSuccessCallback = (res : ReadFileSuccessResult) => void
export type ReadFileFailCallback = (res : ReadFileFailResult) => void
export type ReadFileCompleteCallback = (res : any) => void
export type ReadFileOptions = {
/**
* base64 / text
*/
type : string,
/**
* 文件路径,支持相对地址和绝对地址
*/
path : string,
/**
* 接口调用的回调函数
*/
success : ReadFileSuccessCallback | null,
/**
* 接口调用失败的回调函数
*/
fail : ReadFileFailCallback | null,
/**
* 接口调用结束的回调函数(调用成功、失败都会执行)
*/
complete : ReadFileCompleteCallback | null
}
/**
* getFileContent
* 获取文件内容,可以选择以 base64形式或者纯文本形式 编码
*/
export type ReadFile = (config : ReadFileOptions) => void;
export type WriteFileSuccessResult = {
filePath : string,
}
export type WriteFileFailResult = {
/**
* 错误码
*/
errCode : number,
/**
* 调用API的名称
*/
errSubject : string,
/**
* 错误的详细信息
*/
errMsg : string,
}
export type WriteFileSuccessCallback = (res : WriteFileSuccessResult) => void
export type WriteFileFailCallback = (res : WriteFileFailResult) => void
export type WriteFileCompleteCallback = (res : any) => void
export type WriteFileOptions = {
/**
* 文件路径,只支持绝对地址
*/
path : string,
/**
* 写入的文本内容
*/
content : string,
/**
* 接口调用的回调函数
*/
success : WriteFileSuccessCallback | null,
/**
* 接口调用失败的回调函数
*/
fail : WriteFileFailCallback | null,
/**
* 接口调用结束的回调函数(调用成功、失败都会执行)
*/
complete : WriteFileCompleteCallback | null
}
/**
* WriteFile
* 写入文本
*/
export type WriteFile = (config : WriteFileOptions) => void;
interface Uni {
readFile:ReadFile,
writeFile:WriteFile
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册