0

我正在尝试创建一个基本上需要一个文件(例如 img、pdf 文件)的 post 调用,然后它需要上传到 bluemix 上的对象存储。我能够进行身份验证并获取令牌并创建 authurl。我只需要传递我们与 url 一起上传的文件。但是我不知道如何从邮递员上传的文件在 post 调用中传递到该 url。下面是我的代码

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);
                            }
                        }
                    }
                })

            });

有人可以在这里帮忙。

4

2 回答 2

0

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

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

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

为此,您应该使用此模块:

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

于 2017-03-23T18:51:15.040 回答
0

这是 Node.js 的官方对象存储 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
    });
于 2017-03-25T03:06:20.120 回答