0

I'm having a good problem and I can't figure out what exactly is wrong. I've tried to check SO for similar problem but couldn't find any. I tried uploading an image to firebase storage using function. For instance a client upload image from their local PC and it get processed by a firebase function. This works cause I can see the image uploaded on firebase storage.

The problem is whenever I tried opening the public url on a browser it doesn't open. I also tried opening the image from firebase storage console, not possible, even the image can't be preview. It keeps loading forever.

Image cannot be previewed

PS: Everything works well, when using firebase storage sdk but not in function so I don't think it is a region issue as stated by this SO this

Firebase Function code

    api.post('/v1/event/image/upload', async (req, res) => {
    const response = {};

    var form = new formidable.IncomingForm();
    form.maxFileSize = 200 * 1024 * 1024;
    form.multiples = true;

    return new Promise((resolve, reject) => {
        form.parse(req, (err, fields, files) => {
            //console.log(err, fields, files);
            var file = files.file;
            if (err) {
                response.status = 300;
                response.message = 'Error: ' + err.message;
                response.data = [];
                return res.status(300).json(response);
            }

            var filePath = file.path;//path.join(file.path, file.name);//file.path;
            console.log('File path: ' + filePath, file);

            let fileName = new Date().getTime();
            var bucket = admin.storage().bucket('{bucket-url}');

            return bucket.upload(filePath, {
                destination: 'media/eventz/' + fileName,
                metadata: {
                    contentType: file.type,
                    metadata: {
                        custom: 'metadata'
                    }
                }
            }).then((photo) => {
                var config = [];
                var configObj = {
                    key: fileName,
                    caption: fileName,
                    size: file.size,
                    url: photo[0].metadata.mediaLink //downloadUrl:  // the url to download the file
                };
                config.push(configObj);
                var preview = [];
                preview.push(photo[0].metadata.mediaLink);
                //response.status = 200;
                //response.message = currentTimestamp;
                response.initialPreview = preview;
                response.initialPreviewConfig = config;
                response.initialPreviewThumbTags = [];
                response.initialPreviewAsData = true;
                return res.status(200).json(response);
            }).catch((err) => {
                response.status = 500;
                response.message = 'Error: ' + err.message;
                response.data = [];
                return res.status(500).json(response);
            });
        });
    }).then(() => {
        response.status = 200;
        response.message = 'Image was not uploaded, please try again';
        response.data = [];
        return res.status(200).json(response);
    }).catch(err => {
        response.status = 500;
        response.message = 'Error: ' + err.message;
        response.data = [];
        return res.status(500).json(response);
    });

});
Prodigy
  • 2,094
  • 24
  • 30

0 Answers0