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);
}
}
}
})
});
有人可以帮忙吗。
答案 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
});