const { fileName, imgFile } = req.body;
const bucketRef = admin.storage().bucket();
const file = bucketRef.file(`directory/${fileName}`);
file.save(base64Img, {
metadata: {
contentType: 'image/jpeg',
metadata: {
custom: 'metadata'
},
public: true,
validation: 'md5'
},
}, err => {
if (err) {
res.send({ err });
}
res.send({ msg: 'image uploaded' });
});
import stream from 'stream';
const { fileName, imgFile } = req.body;
const bucketRef = admin.storage().bucket();
const file = bucketRef.file(`directory/${fileName}`);
const bufferStream = new stream.PassThrough();
bufferStream.end(Buffer.from(imgFile, 'data_url'));
bufferStream.pipe(file.createWriteStream({
metadata: {
contentType: 'image/jpeg',
metadata: {
custom: 'metadata'
}
},
public: true,
validation: 'md5'
}))
.on('error', err => {
res.send({
err
});
})
.on('finish', () => {
res.send({ msg: 'image uploaded' });
});
// Google function accepts request containing base64 string
const { base64Img } = req.body
// Bucket reference
const file = bucketRef.file(`directory/${fileName}`);
// file.save uses createWriteStream
const functions = require('firebase-functions');const admin = require('firebase-admin');admin.initializeApp(functions.config().firebase);
exports.publish = functions.https.onRequest((req, res) => {
// Convert the base64 string back to an image to upload into the Google Cloud Storage bucket var base64EncodedImageString = req.body.Thumbnail64, mimeType = 'image/jpeg', fileName = 'Thumbnail64.jpg', imageBuffer = new Buffer(base64EncodedImageString, 'base64');
var bucket = admin.storage().bucket();
// Upload the image to the bucket var file = bucket.file('profile-images/' + fileName); file.save(imageBuffer, { metadata: { contentType: mimeType }, }, ((error) => {
if (error) { return res.status(500).send('Unable to upload the image.'); } return res.status(200).send('Uploaded'); }));})
const uuidv4 = require('uuid/v4');
const uuid = uuidv4();
const os = require('os')
const path = require('path')
const cors = require('cors')({ origin: true })
const Busboy = require('busboy')
const fs = require('fs')
var admin = require("firebase-admin");
var serviceAccount = {
"type": "service_account",
"project_id": "xxxxxx",
"private_key_id": "xxxxxx",
"private_key": "---",
"client_email": "",
"client_id": "xxxxxxxx",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-5rmdm%40xxxxx.iam.gserviceaccount.com"
}
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: "xxxxx-xxxx" // use your storage bucket name
});
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post('/uploadFile', (req, response) => {
response.set('Access-Control-Allow-Origin', '*');
const busboy = new Busboy({ headers: req.headers })
let uploadData = null
busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {
const filepath = path.join(os.tmpdir(), filename)
uploadData = { file: filepath, type: mimetype }
console.log("-------------->>",filepath)
file.pipe(fs.createWriteStream(filepath))
})
busboy.on('finish', () => {
const bucket = admin.storage().bucket();
bucket.upload(uploadData.file, {
uploadType: 'media',
metadata: {
metadata: { firebaseStorageDownloadTokens: uuid,
contentType: uploadData.type,
},
},
})
.catch(err => {
res.status(500).json({
error: err,
})
})
})
busboy.end(req.rawBody)
});
exports.widgets = functions.https.onRequest(app);