Self-hosted Tools 2.2.0

Init Local Uploader – Công cụ upload ảnh tự host, đơn giản và trực quan trên chính server của bạn

Init Local Uploader là công cụ upload ảnh tự host hoàn toàn miễn phí, được phát triển bởi Init HTML. Khác với Init Uploader (endpoint API nhận file như S3), công cụ này cho phép bạn upload ảnh ngay tại chỗ, thông qua giao diện web trực quan — không cần API, không cần SDK, không phụ thuộc vào cloud. Toàn bộ dữ liệu hình ảnh được xử lý và lưu trữ ngay trên chính server của bạn.

Init Local Uploader – Công cụ upload ảnh tự host, đơn giản và trực quan trên chính server của bạn

Bản v2.2.0 là một bản nâng cấp lớn so với 1.0.3: từ một file PHP đơn lẻ, Init Local Uploader giờ có lịch sử upload lưu bằng SQLite, giao diện song ngữ Việt/Anh, và một loạt cải tiến bảo mật đáng kể.

Có gì mới trong v2.2.0?

  • Lịch sử upload (SQLite): Mọi ảnh upload đều được ghi lại — tên file, thư mục, ALT text, kích thước, dung lượng. Không còn phải nhớ hay tìm lại HTML cũ trong đống chat/note nữa.
  • Tìm kiếm & lọc: Trang History cho phép tìm theo tên file hoặc ALT text, lọc theo thư mục, phân trang gọn gàng.
  • Copy lại HTML bất cứ lúc nào: Từng ảnh riêng lẻ, hoặc chọn nhiều ảnh để copy gộp — kể cả khi đã lọc theo thư mục, thứ tự HTML luôn đúng theo thứ tự bạn đã upload.
  • Xoá an toàn — đơn lẻ hoặc hàng loạt: Xoá kèm xác nhận, xoá đồng thời cả file vật lý lẫn bản ghi trong database, chống CSRF trên mọi thao tác.
  • Giao diện song ngữ: Tự động nhận diện ngôn ngữ trình duyệt, kèm nút chuyển đổi VI / EN ngay trên thanh điều hướng.
  • Auto-slug thư mục: Bật một checkbox, thư mục upload sẽ tự sinh từ tiêu đề ảnh (đã xử lý dấu tiếng Việt) — không cần tự gõ tay.
  • Giao diện làm mới hoàn toàn: Theme sáng hiện đại, kéo-thả ảnh kèm xem trước, thanh tiến trình khi upload, không cần load lại trang.
  • Bảo mật nâng cấp toàn diện: CSRF token trên toàn bộ form (đăng nhập, upload, xoá), giới hạn số lần đăng nhập sai lưu trong database (không bị bypass bằng cách xoá cookie như trước), Content-Security-Policy nghiêm ngặt, khoá truy cập trực tiếp vào thư mục dữ liệu, và cảnh báo ngay trên giao diện nếu bạn quên đổi mật khẩu mặc định.

Tính năng chính

  • Giao diện thân thiện: Web UI hiện đại, chỉ cần đăng nhập, kéo-thả ảnh, và click “Upload & generate HTML”.
  • Tự host hoàn toàn: Không cần dịch vụ bên thứ ba — tất cả file lưu trực tiếp trong thư mục uploads/ của bạn.
  • Hỗ trợ nhiều file: Upload nhiều ảnh cùng lúc, tối ưu quy trình nhập nội dung hàng loạt.
  • Thư mục tùy chỉnh: Cho phép tạo cấu trúc thư mục riêng, ví dụ 2026/gallery/, hoặc để tool tự sinh từ tiêu đề.
  • Chuyển đổi WebP: Tuỳ chọn convert ảnh sang WebP để giảm dung lượng mà vẫn giữ chất lượng.
  • Resize ảnh tự động: Giới hạn chiều rộng tối đa cho ảnh lớn, giúp website tải nhanh hơn.
  • Tự động sinh HTML: Sau khi upload, hệ thống tự sinh sẵn thẻ <img> có sẵn width, heightloading="lazy".
  • Lịch sử & tìm kiếm lại: Xem, tìm, lọc, copy lại HTML hoặc xoá bất kỳ ảnh nào đã từng upload.
  • Ghi nhớ tùy chọn: Các thiết lập (ALT, WebP, chất lượng, thư mục…) được lưu lại bằng LocalStorage.

Thông tin phiên bản

  • Phiên bản: 2.2.0
  • Cập nhật: 2026-07-21

Lưu ý nếu bạn đang dùng bản 1.0.3: Từ v2.0.0 trở đi, Init Local Uploader không còn là 1 file PHP đơn lẻ nữa mà là một bộ thư mục (index.php, history.php, includes/, assets/, data/, uploads/). Bạn cần thay thế toàn bộ, không chỉ ghi đè 1 file — nhớ giữ lại thư mục uploads/ cũ nếu muốn giữ ảnh đã upload trước đó (lịch sử SQLite sẽ chỉ tính từ thời điểm nâng cấp).

Yêu cầu hệ thống

  • PHP: Phiên bản từ 7.4 trở lên (khuyến nghị PHP 8+).
  • Extensions: Cần gd để xử lý ảnh, fileinfo để kiểm tra MIME type, và pdo_sqlite để lưu lịch sử upload.
  • Quyền ghi: Thư mục uploads/data/ cần có quyền ghi (chmod 755 hoặc 775).
  • Trình duyệt: Hỗ trợ tốt nhất trên Chrome, Firefox, Edge.

Cài đặt và cấu hình

Sau khi tải về, giải nén và upload nguyên thư mục init-local-uploader/ lên server, sau đó:

  1. Mở includes/config.php, chỉnh sửa thông tin đăng nhập:
define('IU_USERNAME', 'admin');
define('IU_PASSWORD', 'Admin@123'); // Có thể dùng plain text hoặc password_hash
  1. Truy cập https://your-domain.com/index.php — màn hình đăng nhập sẽ xuất hiện.
  2. Đăng nhập bằng tài khoản vừa cấu hình. Nếu quên đổi mật khẩu mặc định, tool sẽ tự hiện cảnh báo nhắc bạn đổi.
  3. Chọn ảnh (kéo-thả hoặc bấm để chọn), tùy chỉnh các tùy chọn (thư mục hoặc auto-slug, resize, chất lượng, WebP…), sau đó bấm “Upload & generate HTML”.
  4. Copy mã HTML đã được tạo sẵn và dán vào bài viết, website hoặc CMS của bạn. Muốn lấy lại HTML của ảnh cũ? Vào tab History, tìm hoặc lọc theo thư mục, rồi copy lại bất cứ lúc nào.

Để tạo mật khẩu mạnh hoặc password_hash, bạn nên dùng công cụ Init Password Generator.

Tùy chỉnh đầu ra HTML

Init Local Uploader tự động sinh HTML với thuộc tính đầy đủ:

<img src="https://your-domain.com/uploads/2026/image.webp" 
     alt="Sunset - Image 1" 
     width="1200" 
     height="800" 
     loading="lazy"
     decoding="async">
  • Nếu bạn nhập tiêu đề ảnh → ảnh sẽ có ALT dạng: Sunset - Image 1, Sunset - Image 2, …
  • Nếu để trống → ảnh sẽ là Image 1, Image 2, …

Ảnh đầu tiên không lazy-load, các ảnh sau có loading="lazy" để tối ưu hiệu năng.

Bảo mật và lưu trữ

  • Mọi file được lưu trong thư mục /uploads ngay tại chỗ; lịch sử lưu trong SQLite tại /data.
  • Đăng nhập bằng username/password, hỗ trợ cả plain text lẫn password_hash().
  • Giới hạn số lần đăng nhập sai theo IP, lưu trong database — không bị bypass bằng cách xoá cookie.
  • CSRF token bắt buộc trên mọi form: đăng nhập, upload, xoá đơn lẻ, xoá hàng loạt.
  • Content-Security-Policy nghiêm ngặt, không cho phép JavaScript/CSS inline.
  • .htaccess chặn truy cập trực tiếp vào thư mục data/ (database) và includes/ (mã nguồn dùng chung); chặn luôn khả năng thực thi PHP trong thư mục uploads/.
  • Không gửi bất kỳ dữ liệu nào ra bên ngoài — hoàn toàn offline & private.
  • Giao diện gọn nhẹ, không dùng JavaScript framework nặng.

Mẹo sử dụng nhanh

  • Đặt cả thư mục trong đường dẫn riêng, ví dụ /tools/ hoặc /admin/, để hạn chế người ngoài đoán được URL.
  • Bật Auto-generate folder from title nếu bạn hay đặt tên thư mục theo tiêu đề bài viết — đỡ gõ tay, đỡ lỗi chính tả đường dẫn.
  • Dùng tab History thay vì lục lại chat/note cũ mỗi khi cần dùng lại một ảnh đã upload trước đó.
  • Đổi mật khẩu mặc định ngay sau khi cài — tool sẽ nhắc bạn nếu quên.
  • Dùng trình duyệt bookmark để truy cập nhanh, hoặc chạy trên local (XAMPP, Laragon) để test mà không cần mạng.

Ví dụ luồng thao tác

  1. Mở https://your-domain.com/index.php
  2. Đăng nhập.
  3. Kéo-thả 5 ảnh PNG, nhập tiêu đề “Blog Cover”.
  4. Bật Auto-slug, chọn resize 1280px, bật WebP, chất lượng 90%.
  5. Nhấn “Upload & generate HTML” — thanh tiến trình chạy, không load lại trang.
  6. Copy HTML code như sau:
<img src="https://your-domain.com/uploads/blog-cover/blog-cover_1.webp" alt="Blog Cover - Image 1" width="1280" height="720">
<img src="https://your-domain.com/uploads/blog-cover/blog-cover_2.webp" alt="Blog Cover - Image 2" width="1280" height="720" loading="lazy" decoding="async">
  1. Vài ngày sau cần dùng lại ảnh #3 trong bộ đó? Mở tab History, gõ “Blog Cover” vào ô tìm kiếm, copy lại HTML của riêng ảnh đó — không cần upload lại.

Ưu điểm so với cloud uploader

Tiêu chíCloud service (AWS, Cloudinary, Wasabi)Init Local Uploader
Phụ thuộc bên thứ baKhông
Bảo mật dữ liệuCó rủi roHoàn toàn riêng tư
Cần cấu hình phức tạpThường cóKhông cần
Upload qua APIBắt buộcKhông
Lịch sử & tìm kiếm lại ảnh cũCó, qua dashboard riêngCó sẵn ngay trong tool
Giao diện trực quanGiới hạnCó sẵn, dùng ngay, song ngữ Việt/Anh
Chi phíCó thể phát sinhMiễn phí 100%

Cấu trúc thư mục sau khi cài đặt

/index.php                 Trang upload chính
/history.php               Trang lịch sử: tìm kiếm, lọc, xoá
/js-strings.php            Chuỗi dịch cho JavaScript
/includes/                 Logic dùng chung (config, DB, auth, i18n)
/assets/css/style.css      Giao diện
/assets/js/                Script cho từng trang
/data/uploads.sqlite       Database lịch sử (tự tạo, được khoá truy cập)
/uploads/
    ├── 2026/
    │   ├── image_1.webp
    │   ├── image_2.webp
    │   └── image_3.webp

Ghi chú kỹ thuật

  • Hỗ trợ định dạng ảnh: jpg, jpeg, png, gif, webp.
  • Có thể cấu hình giới hạn kích thước file, số lần đăng nhập sai cho phép, và số ảnh hiển thị mỗi trang lịch sử — tất cả trong includes/config.php.
  • Giao diện song ngữ dùng dictionary đơn giản trong includes/i18n.php — dễ dàng thêm ngôn ngữ khác nếu cần.
  • Dễ dàng mở rộng — bạn có thể thêm watermark, tạo thumbnail, hay tự động tối ưu ảnh bằng GD hoặc Imagick.

Init Local Uploader là công cụ hoàn hảo nếu bạn cần upload ảnh nhanh, an toàn, và hoàn toàn tự chủ — không cần phụ thuộc vào bất kỳ dịch vụ cloud nào. Giờ đây với lịch sử, tìm kiếm, và giao diện song ngữ, bạn không chỉ upload nhanh mà còn dễ dàng tìm lại bất cứ ảnh nào đã từng đưa lên.

5.0/5 (4)

Bình luận


  • Không có bình luận.

Công cụ trực tuyến

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...