javascript – 如何将文件上传到Node.js中的GCloud?

前端之家收集整理的这篇文章主要介绍了javascript – 如何将文件上传到Node.js中的GCloud?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看到了什么:

>
Integrate with Google Cloud Platform

> Upload files to Firebase Storage using Node.js

感想:

我目前在本地存储图像并将图像路径存储在Firebase实时数据库中.我想将图像存储在GCloud中(以降低成本).

题:

我应该如何修改我的当前代码上传到GCLOUD?

当前代码

var express = require("express");
var router = express.Router();
var flash = require("connect-flash");

var firebase = require("firebase");

var multer = require("multer");
var upload = multer({dest:"./public/images/uploads/",limits: {fileSize: 250000}}).single("image");


router.get("/",function(req,res,next){

    if (firebase.auth().currentUser == null) {
        global.page_name = "login";
        res.render("users/login");
    }
    else {
        global.page_name = "upload";
        res.render("upload");
    }
});

router.post("/",next){
    upload(req,function (err) {
        if (err) {
            req.flash("error_msg","File too large. Max Size: 250KB");
            res.redirect("/upload"); 
            return
        }


        var title = req.body.title;
        var section = req.body.section;

        // Validation
        req.checkBody('title','Title is required').notEmpty();
        req.checkBody('title','Title is too long,max: 50 charachters !').len(0,50);
        req.checkBody('section','Section is required').notEmpty();

        var errors = req.validationErrors();

        if(errors){
            res.render('upload',{
                errors: errors
            });
        }
        else {

            if (req.file){

                console.log("Uploading file...");
                var image = req.file.filename;
                var section = req.body.section.toLowerCase();

                var IDref = firebase.database().ref("posts/"+section+"/lastID");

                IDref.once("value",function(IDsnapshot){
                    var number = IDsnapshot.val();
                    var postRef = firebase.database().ref("posts/"+section).push();
                    var UID = postRef.key;
                    var post = {
                        title: req.body.title,section: req.body.section,image: image,author: firebase.auth().currentUser.uid,section:  section,upvotes: 0,downvotes: 0,id: number + 1,key: UID
                    }

                    IDref.set(post.id);

                    postRef.set(post);

                    var authoredPost = {
                        title: req.body.title,section: section,}

                    var userRef = firebase.database().ref("users/"+firebase.auth().currentUser.uid.toString()+"/posts/"+UID.toString());
                    userRef.set(authoredPost);

                });

                req.flash("success_msg","Post Created");
                res.redirect("/upload"); 
            }
            else {
                console.log("No file uploaded");
                req.flash("error_msg","Image is required");
                res.redirect("/upload");
            }
        }
    });
});

module.exports = router;

解决方法

我认为最好在web或app中使用firebase.storage直接上传到GCloud,但你可以使用这段代码解决你的问题
var express = require("express");
var router = express.Router();
var flash = require("connect-flash");

var fs = require('fs');
var firebase = require("firebase");
var gcloud = require('google-cloud');

var multer = require("multer");
var upload = multer({dest:"./public/images/uploads/",limits: {fileSize: 250000}}).single("image");


// Enable Storage
var gcs = gcloud.storage({
    projectId: 'grape-spaceship-123',keyFilename: '/path/to/keyfile.json'
});

// Reference an existing bucket.
var bucket = gcs.bucket('my-existing-bucket');

router.get("/",next){
    if (firebase.auth().currentUser == null) {
        global.page_name = "login";
        res.render("users/login");
    }
    else {
        global.page_name = "upload";
        res.render("upload");
    }
});

router.post("/","File too large. Max Size: 250KB");
            res.redirect("/upload");
            return
        }


        var title = req.body.title;
        var section = req.body.section;

        // Validation
        req.checkBody('title',{
                errors: errors
            });
        }
        else {

            if (req.file){


                console.log("image saved successfully in local");

                //upload to the GCloud
                bucket.upload(req.file.filename,function(err,file) {
                    if (!err) {
                        console.log("image saved successfully in GCloud");


                        //remove local image
                        fs.unlink(req.file.filename,(err) => {
                            if (err) throw err;
                                console.log('successfully deleted /tmp/hello');
                        });


                        //store image name in firebase
                        var image = file.name;//may be another key hold the image name.
                        var section = req.body.section.toLowerCase();

                        var IDref = firebase.database().ref("posts/"+section+"/lastID");

                        IDref.once("value",function(IDsnapshot){
                            var number = IDsnapshot.val();
                            var postRef = firebase.database().ref("posts/"+section).push();
                            var UID = postRef.key;
                            var post = {
                                title: req.body.title,key: UID
                            }

                            IDref.set(post.id);

                            postRef.set(post);

                            var authoredPost = {
                                title: req.body.title,}

                            var userRef = firebase.database().ref("users/"+firebase.auth().currentUser.uid.toString()+"/posts/"+UID.toString());
                            userRef.set(authoredPost);

                        });

                        req.flash("success_msg","Post Created");
                        res.redirect("/upload");

                    }
                });




            }
            else {
                console.log("No file uploaded");
                req.flash("error_msg","Image is required");
                res.redirect("/upload");
            }
        }
    });
});

module.exports = router;

猜你在找的JavaScript相关文章