我正在使用Ionic v3和后端使用Nodejs。
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads')
},
filename: function(req, file, callback) {
console.log(file)
callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
});
var upload = multer({storage:storage});
要调用此方法,我们需要req,res通过API调用,如下所示
upload(req, res, function(err) {
res.end('File is uploaded')
});
我的问题是,可以在没有API调用(req,res)的情况下调用此上传函数吗?如果是,我们该怎么做?
我想做的是,我正在使用ionic2和nodejs开发聊天应用程序,我可以在其中共享图像。该图像应上传到服务器端。如何进行套接字编程?
答案 0 :(得分:1)
如果您想使用base64上传图片,则可以使用以下代码
socket.on('Upload_Image_base64', function(data)
{
var fs = require('fs');
var img = data.image64;
var imgname = new Date().getTime().toString();
imgname = data.userid + imgname + '.png';
var data = img.replace(/^data:image\/\w+;base64,/, "");
var buf = new Buffer(data, 'base64');
fs.writeFile(__dirname + "/uploads/" +imgname, buf);
});
//这里是data.image64和data.userid - >是我们在套接字事件请求期间传递的参数。 对于多部分 - 这可能会对您有所帮助。
socket.on('Upload_Image', function(data)
{
var app = require('express')();
var multer = require('multer')
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
var upload = multer({ storage: storage }).single(data.file);
console.log(data.file);
app.post('/', function (req, res)
{
upload(req,res,function(req,res)
{
if(err)
{
console.log("error uploading file");
}
else
{
console.log("uploaded");
}
});
});
});