使用 pkgcloud 的 Rackspace 自定义 Skipper 适配器
Custom Skipper adapter for Rackspace using pkgcloud
我已经开始为 Sails.js 中的 Skipper 构建自定义适配器,使用 pkgcloud 上传到 Rackspace 云文件,但我遇到了困难。文件似乎并没有真正上传,尝试捕获错误似乎也没有用。也许我遗漏了什么。
我在这里发布了我的代码:
https://github.com/ccoppenbarger/skipper-rackspace
您需要在 api/adapters/rackspace 中查看才能使用它。
我现在只研究接收器部分。
pkgcloud api 在这里:https://developer.rackspace.com/docs/cloud-files/getting-started/
我的控制器代码如下:
upload : function(req, res){
req.file('file').upload({
adapter: require('../adapters/rackspace/index'),
username: sails.config.rackspace.username,
apiKey: sails.config.rackspace.apiKey,
region: sails.config.rackspace.region,
container: sails.config.rackspace.container
}, function whenDone(err, uploadedFiles) {
if (err) return res.negotiate(err);
else return res.ok({
files: uploadedFiles,
textParams: req.params.all()
});
});
},
有人可以看看我在 index.js 中可能遗漏了什么吗?
只是为了自己回答这个问题,我的代码工作正常,但问题是我期待一个 CDNUri,但却得到了其他东西。基本上,我的接收器代码有效。现在我只需要完成其他人也可以与 Skipper 一起使用的工作。
未找到源,此适配器示例使用 pkgcloud
function pkgCloudReceiver(opts){
var receiver__ = Writable({
objectMode: true
});
var client = getClientStorage(options);
receiver__.once('error', function(err){
//console.log('once err',err);
});
receiver__._write = function(__newFile, encoding, next){
options.tmpdir = options.tmpdir || path.resolve(process.cwd(), '.tmp/pkgcloud-temp');
var file = {
container: options.container,
remote: __newFile.fd,
contentType: mime.lookup(__newFile.fd),
};
writeStream = client.upload(file);
writeStream.on('error', function(err){
receiver__.emit('error', err);
});
writeStream.on('progress', function(data){
//console.log('progress', data);
});
writeStream.on('success', function(data){
next();
});
__newFile.pipe(writeStream);
};
return receiver__;
};
我已经开始为 Sails.js 中的 Skipper 构建自定义适配器,使用 pkgcloud 上传到 Rackspace 云文件,但我遇到了困难。文件似乎并没有真正上传,尝试捕获错误似乎也没有用。也许我遗漏了什么。
我在这里发布了我的代码: https://github.com/ccoppenbarger/skipper-rackspace
您需要在 api/adapters/rackspace 中查看才能使用它。
我现在只研究接收器部分。 pkgcloud api 在这里:https://developer.rackspace.com/docs/cloud-files/getting-started/
我的控制器代码如下:
upload : function(req, res){
req.file('file').upload({
adapter: require('../adapters/rackspace/index'),
username: sails.config.rackspace.username,
apiKey: sails.config.rackspace.apiKey,
region: sails.config.rackspace.region,
container: sails.config.rackspace.container
}, function whenDone(err, uploadedFiles) {
if (err) return res.negotiate(err);
else return res.ok({
files: uploadedFiles,
textParams: req.params.all()
});
});
},
有人可以看看我在 index.js 中可能遗漏了什么吗?
只是为了自己回答这个问题,我的代码工作正常,但问题是我期待一个 CDNUri,但却得到了其他东西。基本上,我的接收器代码有效。现在我只需要完成其他人也可以与 Skipper 一起使用的工作。
未找到源,此适配器示例使用 pkgcloud
function pkgCloudReceiver(opts){
var receiver__ = Writable({
objectMode: true
});
var client = getClientStorage(options);
receiver__.once('error', function(err){
//console.log('once err',err);
});
receiver__._write = function(__newFile, encoding, next){
options.tmpdir = options.tmpdir || path.resolve(process.cwd(), '.tmp/pkgcloud-temp');
var file = {
container: options.container,
remote: __newFile.fd,
contentType: mime.lookup(__newFile.fd),
};
writeStream = client.upload(file);
writeStream.on('error', function(err){
receiver__.emit('error', err);
});
writeStream.on('progress', function(data){
//console.log('progress', data);
});
writeStream.on('success', function(data){
next();
});
__newFile.pipe(writeStream);
};
return receiver__;
};