# lime-file-utils 文件工具组件
fileUtils 是一款可以轻松地在文件和 Base64 编码的数据之间进行转换的UTS API工具包，提供了文件与Base64、DataURL之间的相互转换功能，大大提高开发效率。适用于需要处理图片预览、文件上传、数据传输等场景。

> 插件依赖：无特殊依赖

## 文档链接
📚 组件详细文档请访问以下站点：
- [文件工具组件文档 - 站点1](https://limex.qcoon.cn/native/file-utils.html)
- [文件工具组件文档 - 站点2](https://limeui.netlify.app/native/file-utils.html)
- [文件工具组件文档 - 站点3](https://limeui.familyzone.top/native/file-utils.html)

## 安装方法
1. 在uni-app插件市场中搜索并导入`lime-file-utils`
2. 导入后可能需要重新编译项目
3. 在页面中通过import引入相关API

## 代码演示

### 基础用法
- APP是同步函数，非APP是Promise

```js
import { fileToDataURL, dataURLToFile, processFile, ProcessFileOptions  } from '@/uni_modules/lime-file-utils'
const url = ref('')
const src = ref('')
const base64 = `data:image/png;base64, `

// #ifdef WEB || MP
fileToDataURL('/static/logo.png').then(res => {
	url.value = res
})
dataURLToFile(base64).then(res => {
	src.value = res
})
// #endif
// #ifdef APP
url.value = fileToDataURL('/static/logo.png') ?? ''
src.value = dataURLToFile(base64) ?? '';
// #endif

// 相当于 fileToDataURL
processFile({
	type: 'toDataURL',
	path: '/static/logo.png',
	success: (res: string)=>{
		url.value = res
	}
} as ProcessFileOptions)

// 相当于 dataURLToFile
processFile({
	type: 'toFile',
	path: base64,
	success: (res: string)=>{
		src.value = res
	}
} as ProcessFileOptions)
```


## fileToDataURL
将`文件`或`图片`转成 `URL（data URL）`,接收一个文件路径，APP 返回的是`DataURL`或`null`, 非APP 返回的是`Promise<string>`

```js
fileToDataURL(filePath : string) 
```

## fileToBase64
将`文件`或`图片`转成 `Base64`, 接收一个文件路径，APP 返回的是`Base64`或`null`, 非APP 返回的是`Promise<string>`

```js
fileToBase64(filePath : string) 
```

## dataURLToFile
将 `Base64` 编码的数据 `URL（data URL）`保存为临时路径，接收一个dataURL，参数`filename`为可选, APP返回的是`string`或`null`,非APP 返回的是`Promise<string>`

```js
dataURLToFile(dataURL : string, filename : NullableString = null)
```

## processFile
是上面三个函数的总和，接收`ProcessFileOptions`

```js
processFile({
	type: 'toBase64' | 'toDataURL' | 'toFile',
	path: string,
	filename?: string,//如果是toFile,则可以设置保存文件的文件名
	success ?: (res : string) {},
	fail ?: (res : any) {},
	complete ?: (res : any) {}
} as ProcessFileOptions)
```


## API文档

### 主要函数

| 函数名 | 说明 | 参数 | 返回值 |
| --- | --- | --- | --- |
| fileToDataURL | 将文件或图片转成DataURL | _filePath: string_ | APP: _string \| null_<br>非APP: _Promise\<string\>_ |
| fileToBase64 | 将文件或图片转成Base64 | _filePath: string_ | APP: _string \| null_<br>非APP: _Promise\<string\>_ |
| dataURLToFile | 将DataURL保存为临时文件 | _dataURL: string, filename?: string_ | APP: _string \| null_<br>非APP: _Promise\<string\>_ |
| processFile | 综合处理函数 | _options: ProcessFileOptions_ | _void_ |

### ProcessFileOptions 参数说明

| 属性名 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
| type | 处理类型 | _'toDataURL' \| 'toBase64' \| 'toFile'_ | - |
| path | 文件路径或DataURL | _string_ | - |
| filename | 保存文件名(仅toFile类型可用) | _string_ | - |
| success | 成功回调函数 | _(res: string) => void_ | - |
| fail | 失败回调函数 | _(res: any) => void_ | - |
| complete | 完成回调函数 | _(res: any) => void_ | - |

## 使用注意事项

1. APP平台下函数是同步的，返回结果直接使用
2. 非APP平台(如H5、小程序)下函数是异步的，返回Promise
3. 在条件编译中需要注意区分平台差异
4. dataURLToFile函数的filename参数是可选的，如不提供会自动生成临时文件名
5. 处理大文件时可能会占用较多内存，请注意性能影响

## 平台差异说明

| 函数 | APP | H5 | 微信小程序 | 其他小程序 |
| --- | --- | --- | --- | --- |
| fileToDataURL | 同步 | 异步 | 异步 | 异步 |
| fileToBase64 | 同步 | 异步 | 异步 | 异步 |
| dataURLToFile | 同步 | 异步 | 异步 | 异步 |
| processFile | 支持 | 支持 | 支持 | 支持 |

## 支持与赞赏

如果你觉得本插件解决了你的问题，可以考虑支持作者：

| 支付宝赞助 | 微信赞助 |
|------------|------------|
| ![](https://testingcf.jsdelivr.net/gh/liangei/image@1.9/alipay.png) | ![](https://testingcf.jsdelivr.net/gh/liangei/image@1.9/wpay.png) |