我也使用貓鼬,如果這是相關的。我正在嘗試允許用戶上傳個人資料照片。必須有一個簡單的方法,不是嗎?如何使用MongoDB + Node.js(Express.js)上傳圖片?
回答
我認爲你應該嘗試割絨。
從multer網站簡單:
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
app.post('/upload', uploads.any(), function(req,res){
res.send(req.files);
});
應該上傳您的上傳文件夾文件(下根),並在返回JSON文件。
在本例中,您將看到如何將發送的文件存儲到服務器目錄中,然後從那裏接收並保存它們。你也可以直接保存它們。首先你用角度拿起文件,你可以使用任何東西,如果你想你可以在這裏查看更多細節。這是我的小例子,代碼是在玉石中。
<input type="file" name="file" onchange="angular.element(this).scope().selectFile(this.files)"/>
<button ng-click="savePhoto()">Save </button>
在您的角度控制器
$scope.savePhoto = function() {
var fd = new FormData();
fd.append("file", $scope.files[0]);
)) ;
$http.post("/xxx/photos", fd, {
withCredentials: true,
headers: { 'Content-Type': undefined },
transformRequest: angular.identity
}).success(function (data) {
$scope.image = data; // If you want to render the image after successfully uploading in your db
});
};
在後端使用NPM安裝multer。然後在app.js中,您可以設置一箇中間件來收集您發送的文件。只需在這裏執行console.log(req),以檢查是否在此處獲取文件。 Multer在這裏做魔術。
app.use(multer({
dest: path.join(__dirname, 'public/assets/img/profile'),
rename: function (fieldname, filename, req, res) {
console.log(req)// you will see your image url etc.
if(req.session.user) return req.session.user.id;
}
}));
因此,這裏圖像將存儲在您的服務器中的這個路徑(公共/ assets/img/profile)。現在你從這個服務器拿起文件並添加到你的數據庫。
var path = require('path');
var imgPath =path.join(__dirname, '../public/assets/img/profile/' + id + '.jpg'); // this is the path to your server where multer already has stored your image
console.log(imgPath);
var a ;
a = fs.readFileSync(imgPath);
YourSchema.findByIdAndUpdate(id, {
$set:
{'img.data' : a,
'img.contentType' : 'image/png' }
}, function(err, doc) {
if (err)console.log("oi");
}
);
//In case you want to send back the stored image from the db.
yourSchema.findById(id, function (err, doc) {
if (err)console.log(err);
var base64 = doc.img.data.toString('base64');
res.send('data:'+doc.img.contentType+';base64,' + base64);
});
如何刪除/ public/assets/img/profile /中的圖像後,它存儲在數據庫? – TeodorKolev
@TeodorKolev需要fs模塊並使用fs.unlink傳遞路徑作爲參數。 –
- 1. 上傳圖片並在頁面上顯示該圖片(Node.js,React,js,Express.js)
- 2. Express.Js,Node.Js,MongoDB問題
- 3. 在Express.js中上傳圖片的問題
- 4. 使用angular和node.js上傳圖片
- 5. 如何使用golang將圖片上傳到mongodb
- 6. 使用node.js和mongodb上傳視頻
- 7. 上傳如何使用Node.js
- 8. 在Chrome拓如何使用Node.js和Express.js
- 9. 如何備份使用express.js和Node.js的
- 10. Node.JS,Angular.JS,MySql,Express.JS
- 11. 如何在Android上使用multipart/form-data上傳圖片/圖片
- 12. 如何使用Parse.com javascriptSDK上傳圖片?
- 13. 如何使用Retrofit Android上傳圖片?
- 14. 如何使用AJAX上傳圖片
- 15. 如何使用codeigniter上傳圖片?
- 16. 如何使用FtpWebRequest上傳圖片?
- 17. 如何使用AJAX上傳圖片?
- 18. 使用Express.js上傳文件名的Node.js服務器
- 19. 用node.js將圖片保存爲mongodb
- 20. 關於在Node.js中上傳圖片
- 21. backbone.js + node.js - express.js
- 22. 上傳圖片到Node.js的使用multer不起作用
- 23. 如何使用「上傳圖片按鈕」上傳文件/圖片中硒的webdriver
- 24. Node.js如何支持Express.js?
- 25. flickr node.js api上傳照片
- 26. Summernote圖像+的Node.js(Express.js)
- 27. 的node.js從iPad上上傳圖片與socketio文件上傳
- 28. 圖片上傳 - CDN,MongoDB或NFS?
- 29. Express.js + mongodb服務器的清理關閉(使用node.js)
- 30. node.js + express.js:使用mongodb/mongoose進行會話處理
你可以試試[multer(https://github.com/expressjs/multer) – bugwheels94
的可能的複製[如何使用快車來的NodeJS上傳圖片文件並顯示(http://stackoverflow.com/問題/ 36477145 /如何上傳圖像文件和顯示使用express表nodejs) – RaR