add upload file extension
This commit is contained in:
parent
2650c69995
commit
ee252638cb
@ -5,6 +5,7 @@ import (
|
||||
"io"
|
||||
"mime/multipart"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type LocalStorage struct {
|
||||
@ -30,20 +31,28 @@ func (ls *LocalStorage) Upload(
|
||||
file *multipart.FileHeader,
|
||||
streamerID int,
|
||||
) error {
|
||||
f, err := os.Create(ls.basePath + "/" + string(rune(streamerID)) + "/" + file.Filename)
|
||||
dirPath := ls.basePath + "/" + strconv.Itoa(streamerID)
|
||||
|
||||
if _, err := os.Stat(dirPath); os.IsNotExist(err) {
|
||||
if err := os.MkdirAll(dirPath, os.ModePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
f, err := os.Create(dirPath + "/" + file.Filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
// Открываем файл из multipart.FileHeader
|
||||
// Открываем загруженный файл
|
||||
srcFile, err := file.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer srcFile.Close()
|
||||
|
||||
// Копируем содержимое из исходного файла в новый файл
|
||||
// Копируем содержимое в новый файл
|
||||
_, err = io.Copy(f, srcFile)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -8,7 +8,7 @@ type File struct {
|
||||
ID string `json:"id"`
|
||||
FileName string `json:"file_name"`
|
||||
Extension string `json:"extension"`
|
||||
Type string `json:"type"`
|
||||
FileType string `json:"file_type"`
|
||||
}
|
||||
|
||||
type Widget struct {
|
||||
|
@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS widgets (
|
||||
|
||||
CREATE TABLE IF NOT EXISTS files (
|
||||
id UUID NOT NULL PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
file_type VARCHAR(15) NOT NOT NULL,
|
||||
file_type VARCHAR(15) NOT NULL,
|
||||
extension VARCHAR(10) NOT NULL,
|
||||
streamer_id INTEGER NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT now()
|
||||
|
@ -4,6 +4,8 @@ import (
|
||||
"context"
|
||||
"donat-widget/internal/model"
|
||||
"donat-widget/internal/model/sql"
|
||||
"fmt"
|
||||
"github.com/google/uuid"
|
||||
"github.com/jackc/pgx/v5"
|
||||
"mime/multipart"
|
||||
)
|
||||
@ -35,19 +37,23 @@ func (fileRepo *RepoFile) AddNew(
|
||||
"file_type": fileType,
|
||||
"extension": extension,
|
||||
}
|
||||
fileID, err := fileRepo.db.Insert(ctx, sql.AddNewFile, args)
|
||||
|
||||
fileIDRaw, err := fileRepo.db.Insert(ctx, sql.AddNewFile, args)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
err = fileRepo.storage.Upload(
|
||||
&file,
|
||||
streamerID,
|
||||
)
|
||||
fileIDBytes, ok := fileIDRaw.([16]uint8)
|
||||
if !ok {
|
||||
return "", fmt.Errorf("unexpected fileID type: %T", fileIDRaw)
|
||||
}
|
||||
|
||||
fileID := uuid.UUID(fileIDBytes).String()
|
||||
|
||||
err = fileRepo.storage.Upload(&file, streamerID)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return fileID.(string), nil
|
||||
|
||||
return fileID, nil
|
||||
}
|
||||
|
@ -3,8 +3,9 @@ CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
|
||||
-- Create tables
|
||||
CREATE TABLE IF NOT EXISTS files (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
type VARCHAR(15) NOT NULL,
|
||||
id UUID NOT NULL PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
file_type VARCHAR(15) NOT NULL,
|
||||
file_name VARCHAR(50) NOT NULL,
|
||||
extension VARCHAR(10) NOT NULL,
|
||||
streamer_id INTEGER NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT now()
|
||||
|
Loading…
x
Reference in New Issue
Block a user