What I need to achieve is to allow a user to upload files to Google Cloud Storage from his browser: the user select a file, a FormData containing the file is created and sended to a Cloud Function. The Cloud Function then sends the data to Google Cloud Storage. This piece of code works well for small files. But when I try to upload bigger files (30mo is the size I usually want to send) I have this error
PayloadTooLargeError: request entity too large
It looks like cloud function check the size of the uploaded data even if try to make the limit bigger. Is there any way to go beyond the 10mo limit ?
app.use(bodyParser.json({limit: '50mb'}))
app.use(bodyParser.urlencoded({limit: '50mb', extended: true }));
app.post("/upload-my-file", async (req, res) => {
try {
await authentChecker(req.headers)
const busboy = new Busboy({headers: req.headers});
busboy.on('file', (fieldname, file, filename) => {
const storage = new Storage();
const myBucket = storage.bucket('my-bucket-name');
const newBucketFile = myBucket.file(filename);
//I don't write a temp file on disk, I directly upload it
file.pipe(newBucketFile.createWriteStream())
.on('error', function(err) {
console.log(err)
})
.on('finish', function() {
console.log("finish")
});
})
// Triggered once all uploaded files are processed by Busboy.
// We still need to wait for the disk writes (saves) to complete.
busboy.on('finish', async () => {
res.send();
});
busboy.end(req.rawBody);
} catch (error) {
next(error)
}
})