PHPackages                             taitin/multiimage-import - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. taitin/multiimage-import

ActiveLibrary

taitin/multiimage-import
========================

Description...

0101↓50%PHP

Since Dec 5Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/taitin/multiimage-import)[ Packagist](https://packagist.org/packages/taitin/multiimage-import)[ RSS](/packages/taitin-multiimage-import/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Dcat Admin Multi-Image Import Extension
=======================================

[](#dcat-admin-multi-image-import-extension)

Laravel Dcat Admin 的多圖片匯入擴充套件,支援批次上傳圖片和 Excel 檔案匯入。

功能特點
----

[](#功能特點)

- 📦 支援 ZIP 檔案批次上傳
- 🖼️ 支援多圖片上傳(最多 100 個檔案)
- 📊 整合 Excel 匯入功能
- 🔄 自動清理 24 小時前的臨時檔案
- 👥 支援多使用者同時上傳(避免檔案路徑衝突)
- 🛡️ 唯一 ID 生成機制,防止檔案覆蓋

安裝
--

[](#安裝)

```
composer require taitin/multiimage-import
```

使用方法
----

[](#使用方法)

在你的 Dcat Admin Controller 中使用 `MultiImageImportTool`:

```
use Taitin\MultiimageImport\Tools\MultiImageImportTool;

$grid->tools(function ($tools) {
    $tools->append(new MultiImageImportTool(
        YourImportClass::class,
        '/path/to/sample.xlsx',
        '/admin/your-route'
    ));
});
```

版本歷史
----

[](#版本歷史)

### v1.0.7 (2025-12-05)

[](#v107-2025-12-05)

- 🔧 修正 ZIP 解壓縮檔案的匯入路徑
- ✅ 設定完整的 import\_temp 路徑給解壓縮檔案
- 🐛 確保 fileMove 能正確找到 ZIP 解壓縮的檔案

### v1.0.6 (2025-12-05)

[](#v106-2025-12-05)

- 🛡️ 優雅處理匯入時的缺失檔案
- ⚠️ 檔案不存在時記錄警告並跳過,而非中斷整個匯入
- ✅ 新增檔案存在性檢查
- 🔧 改進 `fileMove()` 方法的錯誤處理機制

### v1.0.5 (2025-12-05)

[](#v105-2025-12-05)

- 🐛 修正 ZIP 檔案路徑重複問題
- ✅ 直接使用上傳檔案路徑,避免路徑重複拼接
- 🔧 防止出現 `import_temp/ID/files/import_temp/ID/files/` 的錯誤路徑

### v1.0.4 (2025-12-05)

[](#v104-2025-12-05)

- 🐛 修正 `ZipArchive::extractTo()` Invalid or uninitialized Zip object 錯誤
- ✅ 在解壓縮前檢查 ZIP 檔案是否成功開啟
- 📝 提供詳細的 ZIP 檔案錯誤訊息
- 📁 自動建立解壓縮目錄

### v1.0.3 (2025-12-05)

[](#v103-2025-12-05)

- 🐛 修正檔案上傳衝突導致的 `errno=21 Is a directory` 錯誤
- ✨ 改進 `setId()` 方法,總是生成唯一 ID(時間戳記 + 微秒)
- 🧹 新增自動清理機制,刪除超過 24 小時的臨時目錄
- 👥 防止多使用者檔案路徑衝突

### v1.0.2

[](#v102)

- 修正多個問題

### v1.0.1

[](#v101)

- 更新

### v1.0.0

[](#v100)

- 初始版本

技術細節
----

[](#技術細節)

### 唯一 ID 生成

[](#唯一-id-生成)

每次上傳都會生成唯一的時間戳記 ID (格式: `{timestamp}{microseconds}`),確保不同使用者之間不會發生檔案路徑衝突。

### 自動清理機制

[](#自動清理機制)

系統會在每次開啟匯入表單時,自動清理超過 24 小時的臨時目錄,防止儲存空間被佔滿。

授權
--

[](#授權)

MIT License

作者
--

[](#作者)

Tim ()

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance49

Moderate activity, may be stable

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity13

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/b4f431adda16511910ccd81ffe60507618da8aa636809d698fd9ebeebdc5d05c?d=identicon)[taitin](/maintainers/taitin)

---

Top Contributors

[![taitin](https://avatars.githubusercontent.com/u/61045564?v=4)](https://github.com/taitin "taitin (66 commits)")

### Embed Badge

![Health badge](/badges/taitin-multiimage-import/health.svg)

```
[![Health](https://phpackages.com/badges/taitin-multiimage-import/health.svg)](https://phpackages.com/packages/taitin-multiimage-import)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
