我想从数据库中的输入type="file"
保存图像,但我不知道如何做到这一点。首先,我尝试了保存图像全局路径,但这不可能考虑到安全性。而且我不确定我是否认为正确。请查看我的代码并给我一些建议
html代码:
<div class="form-group">
<div class="input-group">
<input type="text" name="image" class="form-control" ng-model="product.productData.image" readonly>
<span class="input-group-btn">
<span class="btn btn-default btn-file add-img-upload"><span class="glyphicon glyphicon-folder-open"></span> Browse
<input type="file" ng-model="product.productData.image" name="image" id="imgInp" onchange="angular.element(this).scope().photoChanged(this.files)">
</span>
</span>
</div>
</div>
api.js
router.post('/courses', function(req, res){
var course = new Product();
course.imagePath = req.files.image;
course.save(function(err){
if(err){
console.log(err);
} else {
res.json({success:true, message:'saved'});
}
})
});
服务
userFactory.createNewCourse = function(productData){
return $http.post('/api/courses', productData)
}
模式
var productSchema = new Schema({
imagePath: {
type: String,
},
});
module.exports = mongoose.model('Product', productSchema);
在上面的代码product
中是controllerAs
答案 0 :(得分:0)
您可以通过两种方式实现这一目标,首先您必须将图像保存到任何云,例如AWS s3,您可以使用AWS javascript SDK保存它,并且当文件成功上传到s3然后将其公共URL保存到您的mongodb。在这种情况下,您必须学习AWS javascript SDK,或者您可以找到任何其他云API来上传和保存图像。
另一种方法是将您的图像转换为base64
字符串并将该字符串保存在您的mongodb上,但这将是一个巨大的字符串。您可以轻松地将图像转换为base64,并将其从base64字符串转换回javascript中的图像。
此外,如果您使用快速服务器,则默认情况下,express会为您的公共文件夹提供服务,因此如果您使用abc.jpg
将图像保存在公共文件夹中,则可以通过点击localhost:3000/api/abc.jpg
轻松访问。确保端口与快速服务器的端口相同。