2015-06-19 7 views
5

में अपलोड किया गया है मैं अपलोड फ़ाइल नाम को डीबी में सहेजने की कोशिश कर रहा हूं? धन्यवाद। असल में मैं डेटाबेस में multer file.name कैसे पास कर सकता हूं। var fileimage = file.name;node.js multer फ़ाइल नाम db

router.use(multer({ // https://github.com/expressjs/multer 
    dest: './uploads/', 
    limits : { fileSize:100000 }, 
    rename: function (fieldname, filename) { 
    return filename.replace(/\W+/g, '-').toLowerCase(); 
    }, 
    onFileUploadData: function (file, data, req, res) { 
    // file : { fieldname, originalname, name, encoding, mimetype, path, extension, size, truncated, buffer } 
    var params = { 
     Bucket: 'lemybucket01', 
     Key: file.name, 
     Body: data 
    }; 

    s3.putObject(params, function (perr, pres) { 
     if (perr) { 
     console.log("Error uploading data: ", perr); 
     } else { 
     console.log("Successfully uploaded data to myBucket/myKey"); 
     } 
    }); 
    }, 
    onFileUploadComplete: function (file) { 
    var fileimage = file.name; 
    } 
})); 

router.route('/') 
    //POST a new prod 
    .post(function(req, res) { 

     if(req.files.fileimage !== undefined){ // `image` is the field name from your form 
      //res.redirect("/uploads"); // success 
     }else{ 
      res.send("error, no file chosen"); 
     } 

     // Get values from POST request. These can be done through forms or REST calls. These rely on the "name" attributes for forms 

     var username = req.body.username; 

     //call the create function for our database 
     mongoose.model('Prod').create({ 
      username : username, 
      fileimage : fileimage 
     }, function (err, prod) { 
       if (err) { 
        res.send("There was a problem adding the information to the database."); 
       } else { 
        //Prod has been created 
        console.log('POST creating new prod: ' + prod); 
        res.format({ 
         //HTML response will set the location and redirect back to the home page. You could also create a 'success' page if that's your thing 
        html: function(){ 
         // If it worked, set the header so the address bar doesn't still say /adduser 
         res.location("prods"); 
         // And forward to success page 
         res.redirect("/prods"); 
        }, 
        //JSON response will show the newly created prod 
        json: function(){ 
         res.json(bloprodb); 
        } 
       }); 
       } 
     }) 
    }); 

उत्तर

2

req.files.fileimage !== undefined हमेशा false है: मेरे प्रयास इस वर उपयोग कर रहा है?

चर fileimage आप निम्नलिखित में घोषित गुंजाइश

onFileUploadComplete: function (file) { 
    var fileimage = file.name; 
} 

सीमित है आप कुछ डेटा एक और आप कुछ इस तरह का उपयोग कर सकते करने के लिए एक मध्यस्थ से (fileimage की तरह) पास करना चाहते हैं।

onFileUploadComplete: function (file, req, res) { 
    var fileimage = file.name; 
    req.middlewareStorage = { 
    fileimage : fileimage//, 
    //otherKey : otherValue 
    } 
} 

और आप के रूप

var fileimage = req.middlewareStorage.fileimage; 
mongoose.model('Prod').create({ 
    username : username, 
    fileimage : fileimage 
}, function (err, prod) { 
    // do some stuff 
}); 
+0

यह workd DB में बचा सकता है, danke – simpleton

संबंधित मुद्दे