I need help in uploading the gzip file into gcs. I am using nest js and @google-cloud/storage package.
@Post('/uploadFile')
async uploadFile(@Req() req: Request, @Res() res: Response) {
req.setEncoding('utf-8');
req.on('data', (chunk) => {
const storage = new Storage({ keyFilename: 'datastore.json' });
const bucket = storage.bucket('bucket_name');
let mimeType = req.headers.filetype;
let file = req.headers.filename;
const blob = bucket.file(file + '');
let strOut = "";
for (var i = 0; i < chunk.length; i++) {
strOut += chunk[i].charCodeAt(0).toString(2);
}
blob.save(strOut, {
metadata: {
contentType: mimeType,
contentEncoding: 'gzip'
},
resumable: false,
gzip:true
});
});
I am facing an issue while downloading the data file got downloaded but shows damaged/corrupted may be i am uploading the .gz file wrong. I am streaming the .gz file like this
fs.createReadStream("compressedData/" + names[i]).pipe(
request.post(
{
headers: config.headers,
url: "http://localhost:3000/uploadFile",
},
(err, res) => {
if (err) throw err;
console.log(res.body, config);
}
)
);
here is my config from client side
config = {
headers: {
filetype: "application/gzip",
filename: "sitemap/test-upload/" + names[i],
token: "sadjfbkjbkjvkjvkvkcvkjxsdnkn",
},
};