【问题标题】:Node - Bluemix Object Storage节点 - Bluemix 对象存储
【发布时间】:2016-10-17 08:54:05
【问题描述】:

我想用我的 Bluemix 帐户试用 Object Storage。

前端正在向我发送 base64 编码的图像。

我想知道如何存储文件(通过编写一个新的临时文件)并将其上传到对象存储?

我通过在参数中给出路径成功上传了一个文件,但这里我只有base64数据。

有人要开始吗?

谢谢

【问题讨论】:

    标签: node.js ibm-cloud object-storage


    【解决方案1】:

    使用对象存储节点 SDK:

    https://github.com/ibm-bluemix-mobile-services/bluemix-objectstorage-serversdk-nodejs

    或者你也可以使用pkgcloud

    /*
     * Copyright 2016 IBM Corp.
     *  Licensed under the Apache License, Version 2.0 (the "License");
     *  you may not use this file except in compliance with the License.
     *  You may obtain a copy of the License at
     *      http://www.apache.org/licenses/LICENSE-2.0
     *  Unless required by applicable law or agreed to in writing, software
     *  distributed under the License is distributed on an "AS IS" BASIS,
     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     *  See the License for the specific language governing permissions and
     *  limitations under the License.
     */
    
    
    (function (module) {
        var pkgcloud = require('pkgcloud'),
            fs = require('fs');
    
        function ObjectStorage(container, credentials) {
            this.container = container;
    
            this.config = {
                provider: 'openstack',
                useServiceCatalog: true,
                useInternal: false,
                keystoneAuthVersion: 'v3',
                authUrl: credentials.auth_url,
                tenantId: credentials.projectId,
                domainId: credentials.domainId,
                username: credentials.username,
                password: credentials.password,
                region: credentials.region
            };
    
            this.client = pkgcloud.storage.createClient(this.config);
        }
    
        ObjectStorage.prototype.validate = function () {
            return new Promise(function (resolve, reject) {
                this.client.auth(function (error) {
                    if (error) {
                        return reject(error);
                    }
    
                    resolve();
                });
            }.bind(this));
        };
    
        ObjectStorage.prototype.makeContainer = function () {
            return new Promise(function (resolve, reject) {
    
                this.client.createContainer({name: this.container}, function (error) {
                    if (error) {
                        return reject(error);
                    }
    
                    return resolve();
                });
    
            }.bind(this));
        };
    
        ObjectStorage.prototype.uploadFile = function (path, name) {
            return new Promise(function (resolve, reject) {
    
                var myPicture = fs.createReadStream(path);
    
                var upload = this.client.upload({
                    container: this.container,
                    remote: name
                });
    
                upload.on('error', function (error) {
                    reject(error);
                });
    
                upload.on('success', function (file) {
                    resolve(file);
                });
    
                myPicture.pipe(upload);
            }.bind(this));
        };
    
        module.exports = ObjectStorage;
    })(module);
    

    【讨论】:

    • 谢谢你,我会试试这个包
    • “对象存储节点 SDK”包运行良好。谢谢。
    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多