Skip to content

Commit 2c780f5

Browse files
committed
Add support for minio
1 parent d1d6d58 commit 2c780f5

4 files changed

Lines changed: 49 additions & 0 deletions

File tree

lib/config/default.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ module.exports = {
4848
secretAccessKey: undefined,
4949
region: undefined
5050
},
51+
minio: {
52+
accessKey: undefined,
53+
secretKey: undefined,
54+
endPoint: undefined,
55+
secure: true,
56+
port: 9000
57+
},
5158
s3bucket: undefined,
5259
// authentication
5360
facebook: {

lib/config/environment.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ module.exports = {
2424
secretAccessKey: process.env.HMD_S3_SECRET_ACCESS_KEY,
2525
region: process.env.HMD_S3_REGION
2626
},
27+
minio: {
28+
accessKey: process.env.HMD_MINIO_ACCESS_KEY,
29+
secretKey: process.env.HMD_MINIO_SECRET_KEY,
30+
endPoint: process.env.HMD_MINIO_ENDPOINT,
31+
secure: toBooleanConfig(process.env.HMD_MINIO_SECURE),
32+
port: parseInt(process.env.HMD_MINIO_PORT)
33+
},
2734
s3bucket: process.env.HMD_S3_BUCKET,
2835
facebook: {
2936
clientID: process.env.HMD_FACEBOOK_CLIENTID,

lib/web/imageRouter.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,40 @@ imageRouter.post('/uploadimage', function (req, res) {
7373
})
7474
})
7575
break
76+
77+
case 'minio':
78+
var utils = require('../utils')
79+
var Minio = require('minio')
80+
var minioClient = new Minio.Client({
81+
endPoint: config.minio.endPoint,
82+
port: config.minio.port,
83+
secure: config.minio.secure,
84+
accessKey: config.minio.accessKey,
85+
secretKey: config.minio.secretKey
86+
})
87+
fs.readFile(files.image.path, function (err, buffer) {
88+
if (err) {
89+
logger.error(err)
90+
res.status(500).end('upload image error')
91+
return
92+
}
93+
94+
var key = path.join('uploads', path.basename(files.image.path))
95+
var protocol = config.minio.secure ? 'https' : 'http'
96+
97+
minioClient.putObject(config.s3bucket, key, buffer, buffer.size, utils.getImageMimeType(files.image.path), function (err, data) {
98+
if (err) {
99+
logger.error(err)
100+
res.status(500).end('upload image error')
101+
return
102+
}
103+
res.send({
104+
link: `${protocol}://${config.minio.endPoint}:${config.minio.port}/${config.s3bucket}/${key}`
105+
})
106+
})
107+
})
108+
break
109+
76110
case 'imgur':
77111
default:
78112
imgur.setClientId(config.imgur.clientID)

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
"mermaid": "~7.0.0",
7777
"meta-marked": "^0.4.2",
7878
"method-override": "^2.3.7",
79+
"minio": "^3.1.3",
7980
"moment": "^2.17.1",
8081
"morgan": "^1.7.0",
8182
"mysql": "^2.12.0",

0 commit comments

Comments
 (0)