Skip to content

文件 useFiles

更新: 2025/1/20 字数: 0 字 时长: 0 分钟

基础使用

useFiles 获取手机文件管理权限并选择或者下载文件。

选择本地文件

selectLocalDocument 用于选择本地文件,接收一个对象参数,包括 limit(选择文件数量)、allowedExtensions(接受的文件类型)。

ts
import useFiles from "@/hooks/useCamera";
const { selectLocalDocument } = useFiles();
点击查看示例代码
html
<van-button
  type="primary"
  size="small"
  @click="selectLocalDocument({limit: 3, allowedExtensions: ['jpg', 'png']})"
>
  选择本地文件
</van-button>

打开文件

openFile 用于打开文件,接收一个文件路径参数,这个参数从调用 selectLocalDocument 后的fileResult 返回。

ts
import useFiles from "@/hooks/useCamera";
const { fileResult, selectLocalDocument, openFile } = useFiles();
点击查看示例代码
vue
<script setup lang="ts">
import useFiles from "@/hooks/useFiles";

const { fileResult, selectLocalDocument, downloadFile, openFile } = useFiles();

</script>

<template>
  <div class="p-16">
    <div class="py-10">文件</div>
    <van-space wrap>
      <van-button
        type="primary"
        size="small"
        @click="
          selectLocalDocument({
            limit: 2,
            allowedExtensions: ['jpg', 'doc', 'mp3'],
          })
        "
      >
        选择本地文件
      </van-button>
    </van-space>
    <div class="bg-white dark:bg-[--van-background-2]">
      <template v-if="fileResult.length > 0">
        <van-field
          v-for="(item, index) in fileResult"
          :key="item"
          v-model="fileResult[index]"
          rows="1"
          autosize
          readonly
          type="textarea"
          placeholder=""
        >
          <template #button>
            <van-button type="primary" size="small" @click="openFile(item)">
              打开文件
            </van-button>
          </template>
        </van-field>
      </template>
      <VanEmpty
        v-else
        description="点击选择本地文件按钮,获取文件的路径,再点击打开本地文件按钮,打开文件(每次只能打开一个)"
      />
    </div>
  </div>
</template>

下载文件

downloadFile 用于下载文件到本地,需传入文件的下载路径

ts
import useFiles from "@/hooks/useCamera";
const { downloadFile } = useFiles();
点击查看示例代码
vue
<script setup lang="ts">
const link =
  "http://58.221.176.101:9000/otatest/rdzhihuitong_v1.0.21_202412090317_1733995996551.apk";
</script>
<template>
  <van-button type="primary" size="small" @click="downloadFile(link)">
    下载文件
  </van-button>
</template>

API

返回值、方法

返回值、方法说明类型
fileResult选择本地文件的路径,数组base64 格式Array<string>
selectLocalDocument选择本地文件,接收一个对象参数,见下表(obj:selectType) => void
downloadFile下载文件到本地,接收一个文件下载路径参数(url:string) => void

类型声明

ts
type selectType = {
  // 最多选择的文件数量
  limit: number;
  // 允许的文件类型
  allowedExtensions: Array<string>;
};

Released under the MIT License.

本站访客数 人次 本站总访问量