Skip to content

Upload Library

GoIgniter menyediakan library upload yang mirip dengan CodeIgniter 3 untuk mempermudah upload file dan gambar.

import "github.com/semutdev/goigniter/system/libraries/upload"
func (c *Controller) Upload() {
// Konfigurasi upload
config := upload.Config{
UploadPath: "./public/uploads",
AllowedTypes: "jpg|jpeg|png|gif",
MaxSize: 2048, // 2MB dalam KB
FileName: "timestamp",
CreateDirs: true,
}
// Lakukan upload
uploader := upload.New(config)
result, err := uploader.Do("file", c.Ctx.Request)
if err != nil {
// Handle error
return
}
// Gunakan result
fmt.Println("File uploaded:", result.FileName)
fmt.Println("File path:", result.FilePath)
}
ParameterTypeDescription
UploadPathstringDirektori tujuan upload
AllowedTypesstringEkstensi yang diizinkan, dipisahkan pipa (e.g., `jpg
MaxSizeint64Ukuran maksimal dalam KB (0 = unlimited)
FileNamestringCara penamaan file: original, random, timestamp, atau custom name
OverwriteboolTimpa file yang sudah ada
CreateDirsboolBuat direktori jika belum ada
FileExtstringPaksa ekstensi tertentu (e.g., .jpg)
PropertyTypeDescription
FileNamestringNama file setelah upload
OriginalNamestringNama file asli
FileTypestringMIME type
FilePathstringPath lengkap file
FileSizeint64Ukuran file dalam bytes
FileExtstringEkstensi file
IsImageboolApakah file adalah gambar
ImageWidthintLebar gambar (jika image)
ImageHeightintTinggi gambar (jika image)
ImageTypestringTipe gambar: jpeg, png, gif
result, err := uploader.Do("file", c.Ctx.Request)
if err != nil {
switch err {
case upload.ErrNoFile:
// Tidak ada file yang diupload
case upload.ErrFileTooBig:
// File terlalu besar
case upload.ErrInvalidType:
// Tipe file tidak diizinkan
case upload.ErrFileExists:
// File sudah ada
default:
// Error lain
}
}

Library juga menyediakan fitur image processing:

imgProcessor := upload.NewImageProcessor(upload.ImageConfig{
Source: result.FilePath,
Width: 800,
Height: 600,
MaintainAspectRatio: true,
Quality: 85,
})
err := imgProcessor.Resize()
imgProcessor := upload.NewImageProcessor(upload.ImageConfig{
Source: result.FilePath,
CreateThumbnail: true,
ThumbnailPrefix: "thumb_",
ThumbnailWidth: 150,
ThumbnailHeight: 150,
})
err := imgProcessor.Resize()
err := imgProcessor.Crop(0, 0, 200, 200)

Resize dan crop agar pas dengan dimensi yang diinginkan:

imgProcessor := upload.NewImageProcessor(upload.ImageConfig{
Source: result.FilePath,
Width: 300,
Height: 300,
})
err := imgProcessor.Fill()

Rotasi gambar (90, 180, 270 derajat):

err := imgProcessor.Rotate(90)
// Hapus gambar
upload.DeleteImage("./public/uploads/products/image.jpg")
// Hapus gambar beserta thumbnail
upload.DeleteWithThumbnail("./public/uploads/products/image.jpg", "thumb_")
package admin
import (
"net/http"
"github.com/semutdev/goigniter/system/core"
"github.com/semutdev/goigniter/system/libraries/upload"
)
type Product struct {
core.Controller
}
func (p *Product) Store() {
name := p.Ctx.FormValue("name")
// Upload configuration
config := upload.Config{
UploadPath: "./public/uploads/products",
AllowedTypes: "jpg|jpeg|png|gif|webp",
MaxSize: 2048,
FileName: "timestamp",
CreateDirs: true,
}
var imageFilename string
uploader := upload.New(config)
result, err := uploader.Do("image", p.Ctx.Request)
if err == nil {
imageFilename = result.FileName
// Create thumbnail
imgProcessor := upload.NewImageProcessor(upload.ImageConfig{
Source: result.FilePath,
CreateThumbnail: true,
ThumbnailPrefix: "thumb_",
ThumbnailWidth: 150,
ThumbnailHeight: 150,
})
imgProcessor.Resize()
}
// Save to database
// ...
p.Ctx.Redirect(http.StatusSeeOther, "/admin/product/index")
}
// CI3
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 2048;
$config['file_name'] = 'timestamp';
$this->load->library('upload', $config);
$this->upload->do_upload('userfile');
$data = $this->upload->data();
// GoIgniter
config := upload.Config{
UploadPath: "./uploads",
AllowedTypes: "gif|jpg|png",
MaxSize: 2048,
FileName: "timestamp",
}
uploader := upload.New(config)
result, _ := uploader.Do("userfile", c.Ctx.Request)
// result.FileName, result.FilePath, dll.

Selanjutnya: Helpers - Fungsi helper bawaan GoIgniter.