定制 mrshanebarron/file-upload 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mrshanebarron/file-upload

最新稳定版本:v1.0.4

Composer 安装命令:

composer require mrshanebarron/file-upload

包简介

File upload component for Laravel - supports Livewire and Vue

README 文档

README

A drag-and-drop file upload component for Laravel applications. Supports multiple files, size validation, and progress display. Works with Livewire and Vue 3.

Installation

composer require mrshanebarron/file-upload

Livewire Usage

Basic Usage

<livewire:sb-file-upload wire:model="files" />

Single File

<livewire:sb-file-upload
    wire:model="document"
    :multiple="false"
/>

With Validation

<livewire:sb-file-upload
    wire:model="images"
    accept="image/*"
    :max-size="5242880"
/>

Livewire Props

Prop Type Default Description
wire:model array [] Selected files
multiple boolean true Allow multiple files
accept string '*' Accepted file types
max-size number null Max file size in bytes

Vue 3 Usage

Setup

import { SbFileUpload } from './vendor/sb-file-upload';
app.component('SbFileUpload', SbFileUpload);

Basic Usage

<template>
  <SbFileUpload v-model="files" />
</template>

<script setup>
import { ref } from 'vue';
const files = ref([]);
</script>

Image Upload

<template>
  <SbFileUpload
    v-model="images"
    accept="image/*"
    :max-size="5 * 1024 * 1024"
    @error="handleError"
  />
</template>

<script setup>
import { ref } from 'vue';

const images = ref([]);

const handleError = ({ file, message }) => {
  alert(message);
};
</script>

Document Upload

<template>
  <div class="space-y-4">
    <label class="block text-sm font-medium">Upload Documents</label>
    <SbFileUpload
      v-model="documents"
      accept=".pdf,.doc,.docx"
      :max-size="10485760"
    />
    <p class="text-xs text-gray-500">PDF, DOC, DOCX up to 10MB each</p>
  </div>
</template>

Vue Props

Prop Type Default Description
modelValue Array [] Array of File objects
multiple Boolean true Allow multiple files
accept String '*' File type filter (MIME or extensions)
maxSize Number null Maximum file size in bytes

Events

Event Payload Description
update:modelValue File[] Files changed
error { file, message } Validation error

Features

  • Drag and Drop: Visual drop zone
  • File Browser: Click to browse files
  • Multiple Files: Upload many files at once
  • Size Validation: Reject oversized files
  • Type Filtering: Accept specific file types
  • File Preview: Show selected files with sizes
  • Remove Files: Click to remove individual files
  • Progress Display: Show upload progress

Styling

Uses Tailwind CSS:

  • Dashed border drop zone
  • Blue highlight on drag over
  • File list with icons
  • Remove buttons on hover

Requirements

  • PHP 8.1+
  • Laravel 10, 11, or 12
  • Tailwind CSS 3.x

License

MIT License

统计信息

  • 总下载量: 11
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: Vue

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-14