我正在尝试创建一个系统,该系统将从另一个站点读取文件并将其作为文件下载提供给用户。 文件大小可能从Mbs到Gbs不等。
我已经使用香草nodejs创建了概念证明。
const app = express();
app.get('/', (req, res) => {
res.setHeader('Content-disposition', 'attachment; filename=FILENAME');
res.setHeader('Content-type', 'application/octet-stream');
http.get('URL_TO_FILE', data => {
data.pipe(res);
});
});
我想使用回送4做到这一点。这可能吗?谢谢!
答案 0 :(得分:0)
您可以使用nodejs request并使用Loopback 4控制器轻松完成此操作。 您需要导入以下软件包:
var request = require('request');
var fs = require('fs');
并将此代码放入端点方法:
@get('/getImage')
async retrieveImage(): Promise<any> {
let file = fs.createWriteStream(__dirname + `/file.jpg`);
console.log('the file is here: ' + file.path);
return await new Promise((resolve, reject) => {
request({
url: 'URL_TO_FILE',
headers: {
'Content-disposition': 'attachment; filename=FILENAME',
'Content-type': 'application/octet-stream',
},
gzip: true,
})
.pipe(file)
.on('finish', () => {
console.log(`The file is finished downloading.`);
resolve();
})
.on('error', (error: any) => {
reject(error);
})
}).catch(error => {
console.log(`something happened: ${error}`)
});
}
从此,您需要转到以下网址:
http://localhost:3000/getImage
该文件将以“ file.jpg”名称保存在您的控制器文件夹中。