Skip to content

上传功能

文件上传功能,前端提供以下组件,不做特殊说明的都是基于本地上传

后端本地上传

本地上传,专业版基于 Laravel Filesystem 提供两个本地disk,配置如下。这是配置系统内置,可以根据实际需求添加自己的 disk 配置

php
// config/filesystem.php
[
    'disks' => [
        // 上传目录
        'uploads' => [
            'driver' => 'local',
            'root' => storage_path('uploads'),
            'url' => env('APP_URL').'/uploads',
            'visibility' => 'public',
            'throw' => false,
        ],

        // 静态文件存放目录,不对外开放
        'static' => [
            'driver' => 'local',
            'root' => storage_path('static'),
            'visibility' => 'private',
            'directory_visibility' => 'private',
            'throw' => false,
        ],
    ]
]

前端组件可以使用 props 来决定使用哪个 disk 作为本地处理。下面我们在这里了解下

ts
{
   // 配合后端的 filesysytem 配置
  disk: {
    type: String,
    default: 'uploads'
  },
  // 存储的目录
  path: {
    type: String,
    default: 'attachments'
  }
}

前端上传

图片上传

vue
<UploadImage v-model="formData.logo" class="w-20 h-20" :file-extensions="['.png', '.jpg', '.jpeg']" />

上传到某个 disk 配置,如下

  • disk
  • path, 上传到某个文件夹,这个 path 是在 disk 对应的某个路径下
vue
<UploadImage v-model="formData.logo" class="w-20 h-20" :file-extensions="['.png', '.jpg', '.jpeg']" disk="xxxx" path="xxx/images" />

单文件上传

基本使用,默认上传到 uploads disk 配置。

vue
<UploadFile v-model="files" :file-extensions="['.md', '.txt', '.csv', '.xlsx']" />

上传到某个 disk 配置,如下

  • disk
  • path, 上传到某个文件夹,这个 path 是在 disk 对应的某个路径下
vue
<UploadFile v-model="files" :file-extensions="['.md', '.txt', '.csv', '.xlsx']" disk="xxxx" path="xxx/files" />

多文件上传

基本使用,默认上传到 uploads disk 配置。

vue
<UploadFiles v-model="files" :file-extensions="['.md', '.txt', '.csv', '.xlsx']" />

上传到某个 disk 配置,如下

  • disk
  • path, 上传到某个文件夹,这个 path 是在 disk 对应的某个路径下
vue
<UploadFiles v-model="files" :file-extensions="['.md', '.txt', '.csv', '.xlsx']" disk="xxxx" path="xxx/files" />

附件上传

默认使用单图

vue
<AttachUpload v-model="formData.logo" class="w-20 h-20" />

选择多个附件

vue
<AttachUpload v-model="formData.logo" class="w-20 h-20" :multi="true" />

OSS 上传

首先需要配置 OSS 配置之后,在使用下面的组件 专业版上传-OSS上传

vue
<OssUpload v-model="formData.logo" class="w-20 h-20" />

COS 上传

首先需要配置 COS 配置之后,在使用下面的组件

专业版上传-cos上传

vue
<CosUpload v-model="formData.logo" class="w-20 h-20" />