UploadFile
Giới thiệu
Namespace: DPSinfra.UploadFile Dùng để upload file và image, để sử dụng cần cài phiên bản mới nhất
Cài đặt chung
Trong file Startup.cs phần ConfigureServices thêm vào đoạn code này để lấy access_key và secret_key từ vault
Secret<SecretData> minioSecret = vaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(path: "minio", mountPoint: "kv").Result;
IDictionary<string, object> minioData = minioSecret.Data.Data;
Configuration["MinioConfig:MinioAccessKey"] = minioData["access_key"].ToString();
Configuration["MinioConfig:MinioSecretKey"] = minioData["secret_key"].ToString();
cài đặt trong appsettings.Development.json
MinioConfig{
"MinioSSL": "true",
"MinioServer": "cdn.jee.vn"
},
Cách sử dụng
Trong 1 controller bất kỳ, muốn sử dụng cần inject private IConfiguration vào nội hàm:
public class apiController : ControllerBase
{
private IConfiguration _config;
public apiController(IConfiguration configuration...)
{
_config = configuration;
}
}
// class đã có trong DPSinfra.UploadFile không tạo mới
public class upLoadFileModel
{
public byte[] bs { get; set; }
public string Linkfile { get; set; }
public string FileName { get; set; }
}
Gọi hàm sử dụng
upLoadFileModel up = new upLoadFileModel()
{
bs = Convert.FromBase64String(Base64), //Convert sang dạng byte
FileName = FileName, // ví dụ test.docx
Linkfile = "File" // Folder chứ File ví dụ File
};
UploadFile.UploadFileMinio(up, _config);
//_config khai báo ở hàm khởi tạo
Sử dụng các phương thức static để uploadFile
UploadFile.UploadFileAllTypeMinio(upLoadFileModel, _config, Contenttype);
//upload tất cả File - Contenttype là kiểu dữ liệu của file (ví dụ: "image/jpg" or "image/" or "application/")
//có thể để null nếu ko xác định được Contenttype
UploadFile.UploadFileAllTypeMinio(upLoadFileModel, _config);
UploadFile.RemoveImageMinio(FileName, _config);
// xóa File: FileName là link trả về ví dụ: /File/test.docx
Model kết quả trả về
// class đã có trong DPSinfra.UploadFile không tạo mới
public class UploadResult
{
public bool status { get; set; }
public string link { get; set; }
}
//kết quả trả về sẽ là
{
"status": true,
"link": "project-name/File/test.docx"
}
note Để hiển thị được hình ảnh các app phải tự cộng chuổi: MinioServer + link Ví dụ:
"https://cdn.jee.vn" + "project-name/File/test.docx"
// MinioServer lấy từ appsetting
Để hiển thị được hình ảnh lên giao diện cần phải đc cấp quyền cho Bucket
Cách gọi hàm sử dụng upload file mới
public class apiController : ControllerBase
{
private IConfiguration _config;
private IProducer _producer;
public apiController(IConfiguration configuration, IProducer producer...)
{
_config = configuration;
_producer = producer;
}
}
//func mới yêu cầu 3 trường bắt buộc là CustomerID, UserID và AppCode
upLoadFileModel up = new upLoadFileModel()
{
bs = Convert.FromBase64String(Base64), //Convert sang dạng byte
FileName = FileName, // ví dụ test.docx
Linkfile = "File", // Folder chứa File ví dụ File
CustomerID = 25,
UserID = 1000,
AppCode = _config.GetValue<string>("AppConfig:AppCode")
};
await UploadFile.UploadFileMinio(up, _config, _producer);
//_config khai báo ở hàm khởi tạo
Sử dụng các phương thức static để uploadFile
await UploadFile.UploadFileAllTypeMinio(upLoadFileModel, _config, _producer, Contenttype);
//upload tất cả File - Contenttype là kiểu dữ liệu của file (ví dụ: "image/jpg" or "image/" or "application/")
//có thể để null nếu ko xác định được Contenttype
await UploadFile.UploadFileAllTypeMinio(upLoadFileModel, _config, _producer);
Func Xóa file mới
//func mới yêu cầu 3 trường bắt buộc là CustomerID, UserID và AppCode
upLoadFileModel up = new upLoadFileModel()
{
FileName = FileName, // ví dụ File/test.docx
CustomerID = 25,
UserID = 1000,
AppCode = _config.GetValue<string>("AppConfig:AppCode")
};
await UploadFile.RemoveImageMinio(upLoadFileModel, _config, _producer);