如何使用节点js调用将文件上载到对象存储

时间:2017-03-23 18:36:52

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

Iam尝试创建一个基本上需要文件的帖子调用(例如img,pdf文件),然后需要上传到bluemix上的对象存储。我能够进行身份验证并获取令牌并创建authurl.I只需要传递我们上传的文件和url.But我想出了如何从邮递员上传的文件被传递到该网址中的url.Below是我的代码

app.post('/uploadfile',function(req,res){
         getAuthToken().then(function(token){
                    if(!token){
                        console.log("error");
                    }
                    else{
                        var fileName = req.body.file;
                        console.log("data",file);
                        console.log(SOFTLAYER_ID_V3_AUTH_URL,"url");
                        var apiUrl = SOFTLAYER_ID_V3_AUTH_URL + config.projectId + '/' + containerName + fileName ;
                        url : apiurl,
                        method :'PUT',
                        headers :{
                            'X-Auth-Token': token
                        },function(error, response, body) {
                            if(!error && response.statusCode == 201) {
                                res.send(response.headers);
                            } else {
                                console.log(error, body);
                                res.send(body);
                            }
                        }
                    }
                })

            });

有人可以帮忙吗。

2 个答案:

答案 0 :(得分:0)

由于您使用的是Express,因此您应该使用以下内容:

如果没有处理文件上传的正文解析器,您将无法在Express请求处理程序中获取上传的文件。

然后,您需要将上传的文件传递给您正在制作的请求。

为此你应该使用这个模块:

当经过测试并且可以使用可用的解决方案时,无需重新发明轮子。特别是当您处理API密钥和秘密等敏感信息时,我不会建议您从头开始实施自己的解决方案,除非您真的知道自己在做什么。如果你真的知道自己在做什么,那么你就不需要为这样的事情寻求建议。

答案 1 :(得分:0)

以下是Node.js的官方Object Storage SDK:

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

连接到对象存储:

var credentials = {
    projectId: 'project-id',
    userId: 'user-id',
    password: 'password',
    region: ObjectStorage.Region.DALLAS
};
var objStorage = new ObjectStorage(credentials);

创建一个容器:

objstorage.createContainer('container-name')
    .then(function(container) {
        // container - the ObjectStorageContainer that was created
    })
    .catch(function(err) {
        // AuthTokenError if there was a problem refreshing authentication token
        // ServerError if any unexpected status codes were returned from the request
    });
}

创建新对象或更新现有对象:

container.createObject('object-name', data)
    .then(function(object) {
        // object - the ObjectStorageObject that was created
    })
    .catch(function(err) {
        // TimeoutError if the request timed out
        // AuthTokenError if there was a problem refreshing authentication token
        // ServerError if any unexpected status codes were returned from the request
    });