You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
import {models} from '../models'
|
|
import * as path from 'path'
|
|
|
|
const env = process.env.NODE_ENV || 'development';
|
|
const config = require(path.join(__dirname,'../../config/app.json'))[env]
|
|
|
|
// setup disk storage
|
|
var multer = require('multer')
|
|
var avatarStorage = multer.diskStorage({
|
|
destination: (req, file, cb) => {
|
|
let dir = __dirname.includes('/dist/') ? path.join(__dirname,'..') : __dirname
|
|
cb(null, dir + '/../../public/uploads')
|
|
},
|
|
filename: (req, file, cb) => {
|
|
const mime = file.mimetype
|
|
const extA = mime.split("/")
|
|
const ext = extA[extA.length-1]
|
|
if(req.body.chat_id){
|
|
cb(null, `chat_${req.body.chat_id}_picture.${ext}`)
|
|
} else {
|
|
cb(null, `${req.body.contact_id}_profile_picture.${ext}`)
|
|
}
|
|
}
|
|
})
|
|
var avatarUpload = multer({ storage: avatarStorage })
|
|
|
|
const uploadFile = async (req, res) => {
|
|
const { contact_id, chat_id } = req.body
|
|
const { file } = req
|
|
|
|
const photo_url =
|
|
config.node_http_protocol +
|
|
'://' +
|
|
process.env.NODE_IP +
|
|
'/static/uploads/' +
|
|
file.filename
|
|
|
|
if(contact_id){
|
|
const contact = await models.Contact.findOne({ where: { id: contact_id } })
|
|
if(contact) contact.update({ photoUrl: photo_url })
|
|
}
|
|
|
|
if(chat_id){
|
|
const chat = await models.Chat.findOne({ where: { id: chat_id } })
|
|
if(chat) chat.update({ photoUrl: photo_url })
|
|
}
|
|
|
|
res.status(200)
|
|
res.json({
|
|
success: true,
|
|
contact_id: parseInt(contact_id||0),
|
|
chat_id: parseInt(chat_id||0),
|
|
photo_url
|
|
});
|
|
res.end();
|
|
}
|
|
|
|
export {
|
|
avatarUpload,
|
|
uploadFile
|
|
}
|
|
|