如何使用 mean.js 上传图像并将其保存到数据库(猫鼬)

Posted

技术标签:

【中文标题】如何使用 mean.js 上传图像并将其保存到数据库(猫鼬)【英文标题】:How to upload an image and save it to database(mongoose) using mean.js 【发布时间】:2015-03-02 16:16:06 【问题描述】:

我是平均堆栈的新手。我想知道如何通过 AngularJS 将图像文件上传到数据库(猫鼬)。请您提供一些代码。我已经搜索了互联网,我找到了这段代码,但它对我不起作用

HTML 代码:

<div class="col-md-4 col-xs-8">
    <div class="fileinput fileinput-new" data-provides="fileinput">
        <img class="profile-pic thumbnail" style="width: 200px; height: 150px;" />
        <div>
            <span class="btn btn-default btn-file">
            <span class="fileinput-new upload-button"><span class="glyphicon glyphicon-upload"></span> Upload New Pic</span>
            <input class="file-upload" type="file" data-ng-file-select="onFileSelect($files)"  accept="image/png, image/jpeg" >
            </span>                 
        </div>

        <span data-ng-if="uploadInProgress">Upload progress:  uploadProgress </span>
        <img data-ng-src="uploadedImage" data-ng-if="uploadedImage">
        <br>
    </div>
</div>

客户端控制器.js:

$scope.onFileSelect = function(image) 
    console.log("image selected" + image);
    if (angular.isArray(image)) 
        image = image[0];
    

    // This is how I handle file types in client side
    if (image.type !== 'image/png' && image.type !== 'image/jpeg') 
        alert('Only PNG and JPEG are accepted.');
        return;
    

    $scope.uploadInProgress = true;
    $scope.uploadProgress = 0;

    $scope.upload = $upload.upload(
        url: '/upload/image',
        method: 'POST',
        file: image
    ).progress(function(event) 
        $scope.uploadProgress = Math.floor(event.loaded / event.total);
        $scope.$apply();
    ).success(function(data, status, headers, config) 
        $scope.uploadInProgress = false;
        // If you need uploaded file immediately 
        $scope.uploadedImage = JSON.parse(data);      
    ).error(function(err) 
        $scope.uploadInProgress = false;
        console.log('Error uploading file: ' + err.message || err);
    );
;

我的问题是即使选择了控制器没有触发的文件。我还保留了一个控制台进行测试,但它无法正常工作。

【问题讨论】:

【参考方案1】:

这是我对类似问题的回答,它将文件保存在服务器上并将 url/name 放入 mongoDB。 https://***.com/a/28148042/4494320 它需要 multer (npm install multer --save)。

【讨论】:

以上是关于如何使用 mean.js 上传图像并将其保存到数据库(猫鼬)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何通过 API postman 上传图像并将其保存到数据库(phpmyadmin)

如何将图像上传到 Firebase 存储并将其添加到数据库中?

上传图像/文件并将其转换为 mysql 数据库

如何使用GridFS上传文件并将其直接保存到MongoDB中

DreamFactory:如何将图像上传到文件服务器并将图像的路径保存在数据库中?

如何在单个事务中将图像上传到 Firebase 存储并在数据库中保存参考?