在NodeJS中将文件从S3存储桶上传到服务器(SFTP)可以通过以下步骤实现:
npm install aws-sdk
const AWS = require('aws-sdk');
const fs = require('fs');
const { Client } = require('ssh2');
AWS.config.update({
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',
region: 'YOUR_S3_BUCKET_REGION'
});
const s3 = new AWS.S3();
const params = {
Bucket: 'YOUR_S3_BUCKET_NAME',
Key: 'YOUR_FILE_KEY'
};
s3.getObject(params, (err, data) => {
if (err) {
console.error(err);
} else {
// 将文件数据保存到本地临时文件
fs.writeFileSync('temp_file', data.Body);
console.log('文件下载成功!');
}
});
const conn = new Client();
conn.on('ready', () => {
conn.sftp((err, sftp) => {
if (err) {
console.error(err);
} else {
// 上传文件到服务器
const readStream = fs.createReadStream('temp_file');
const writeStream = sftp.createWriteStream('REMOTE_FILE_PATH');
readStream.pipe(writeStream);
console.log('文件上传成功!');
}
conn.end();
});
}).connect({
host: 'YOUR_SFTP_HOST',
port: 'YOUR_SFTP_PORT',
username: 'YOUR_SFTP_USERNAME',
password: 'YOUR_SFTP_PASSWORD'
});
请注意,上述代码中的"YOUR_ACCESS_KEY"、"YOUR_SECRET_ACCESS_KEY"、"YOUR_S3_BUCKET_REGION"、"YOUR_S3_BUCKET_NAME"、"YOUR_FILE_KEY"、"YOUR_SFTP_HOST"、"YOUR_SFTP_PORT"、"YOUR_SFTP_USERNAME"和"YOUR_SFTP_PASSWORD"需要替换为实际的值。
这是一个基本的示例,你可以根据实际需求进行修改和扩展。在这个过程中,你可以使用腾讯云的对象存储(COS)作为S3存储桶的替代品,腾讯云的云服务器(CVM)作为SFTP服务器的替代品。腾讯云的COS和CVM产品可以提供高可靠性、高性能和安全的云存储和云计算服务。
更多关于腾讯云COS的信息和产品介绍,请访问:腾讯云对象存储(COS)
更多关于腾讯云CVM的信息和产品介绍,请访问:腾讯云云服务器(CVM)
领取专属 10元无门槛券
手把手带您无忧上云