mtr-storage
v1.2.2
Published
Library ini menggunakan package [**multer v1.4.1**](https://www.npmjs.com/package/multer "multer") dan [**request-promise v4.2.2**](https://www.npmjs.com/package/request-promise) ### Installation ```bash npm i git+ssh://[email protected]/mtr-p
Downloads
4
Readme
Storage Library
Dependency
Library ini menggunakan package multer v1.4.1 dan request-promise v4.2.2
Installation
npm i git+ssh://[email protected]/mtr-platform/libs/storage#v1.2.2
Penggunaan
Simpan konfigurasi service API pada file .env
.
Nama service yang menggunakan disimpan dalam SVC_NAME
dan Datastore Service API dalam SVC_DATASTORE
.
SVC_NAME=svc_name
SVC_DATASTORE=http://datastore.meteor.test:80
Untuk router middleware
const { multipartMiddleware } = require('mtr-storage');
router.post('/propic', multipartMiddleware([{ name: 'propic', maxCount: 1 }]), (req, res) => {
console.log(req.files.propic[0]);
/* or use this if your node support es6 */
const [file] = req.files.propic;
console.log(file);
});
Implementasi dengan Validation Formatter Library
const { checkBody } = require('mtr-validator');
checkBody(req, {
propic: {
notEmpty: true,
isMimeType: ['image/jpeg', 'image/png'],
isMaxFile: 2000000,
},
});
Upload file ke DataStore
uploadUpdate(file: [required File], fileName: [required String], pathName: [required String], uploadWithNewName: [default:false Bool], bucketName: [optional String])
- upload function ke datastore Minio
- jika fileName tidak kosong dan uploadWithNewName true, maka akan upload file dengan nama baru dan melakukan delete pada file sebelumnya
- jika fileName tidak kosong dan uploadWithNewName false, maka akan upload file dengan meng-replace file sebelumnya
try {
const filename = await uploadUpdate(file, fileName, pathName, uploadWithNewName, bucketName)
.catch(() => {
throw new Error('Failed update profile picture');
});
console.log(filename);
} catch (error) {
console.log(error);
}
uploadCreate(file: [required File], fileName: [required String], pathName: [required String], bucketName: [optional String])
- upload function ke datastore Minio
- jika fileName tidak kosong maka akan upload file baru dengan tambahan suffix jumlah duplikat di filename, ex: yourfilename_2.jpg
try {
const filename = await uploadCreate(file, fileName, pathName, bucketName)
.catch(() => {
throw new Error('Failed update profile picture');
});
console.log(filename);
} catch (error) {
console.log(error);
}
uploadOSS(file: [required File], fileName: [required String], pathName: [required String], bucketName: [optional String], replace: [optional Boolean], uploadWithNewName: [optional Boolean])
- upload function ke datastore OSS Alicloud
- jika fileName tidak kosong maka akan upload file baru dengan tambahan suffix jumlah duplikat di filename, ex: yourfilename_2.jpg
- jika replace bernilai true, maka fitur upload akan menghapus file pada OSS dengan nilai fileName yg sama, default bernilai false. fitur replace hanya akan berjalan apabila argumen uploadWithNewName bernilai True.
try {
const filename = await uploadOSS(file, fileName, pathName, bucketName)
.catch(() => {
throw new Error('Failed update profile picture');
});
console.log(filename);
} catch (error) {
console.log(error);
}
API
checkMiddleware(fields)
Untuk meng-handle multipart form dan memasukkan file dari request ke dalam req.files.
Selain itu, API ini juga menambahkan object metadata ke dalam req.body untuk pemggunaan pada lib validation.
Param | Jenis | Keterangan --- | --- | --- fields | Array | Array yang berisi daftar file.
upload(upload(file: FileUpload[, fileName?: string][, replace?: boolean]))
Upload Buffer ke Datastore server.
Param | Jenis | Keterangan
--- | --- | ---
file | Object | Object files dari multipartMiddleware.
fileName | string | Nama file yang akan digunakan dalam storage.
| | Jika kosong maka akan dibuatkan secara otomatis. Misal: '/assets/face.png'
pathName | string | Path yang akan digunakan untuk menyimpan file
replace | boolean | Jika true
, maka akan menimpa file yang sudah ada
delete file DataStore
deleteFile(fileName: [required String], pathName: [required String], bucketName: [optional String])
try {
const filename = await deleteFile(fileName, bucketName)
.catch(() => {
throw new Error('Failed update profile picture');
});
console.log(filename);
} catch (error) {
console.log(error);
}