我正在使用axios和form-data npm软件包上载本地文件。
这是基本的代码结构:
char *
我想对Google Cloud Storage中的文件执行相同的操作。换句话说,与其将文件从云存储下载到本地目的地,然后使用const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
async function upload()
{
var path_str = '/path/to/file.pdf';
var form_obj = new FormData();
form_obj.append('my_file', fs.createReadStream(path_str));
var req_obj = {};
req_obj['url'] = 'https://post-url';
req_obj['method'] = 'post';
req_obj['data'] = form_obj;
return await axios(req_obj);
}
来访问它,我更希望在文件位于文件中时对其进行fs.createReadStream
的等效操作。云存储。
在Google Cloud Storage npm软件包中,fs.createReadStream
有一个名为createReadStream的方法,但是当我将其插入代码中时,该方法不起作用。
有没有办法做到这一点?
答案 0 :(得分:0)
根据您指出的方法createReadStream:
创建可读流以读取远程文件的内容。它可以通过管道传输到可写流,也可以收听“数据”事件以读取文件的内容。
我了解到您对以粗体显示的文本感兴趣。这是一个如何做的例子。此代码读取文件内容,而不必将其下载到本地系统。数据对象是Buffer
的实例,它取决于您如何处理它。
const {Storage} = require('@google-cloud/storage');
const fs = require('fs');
const storage = new Storage();
const bucket = storage.bucket('yourBucketName');
const remoteFile = bucket.file('yourFileName')
remoteFile.createReadStream()
.on('error', function(err) {})
.on('response', function(response) {
console.log('Server connected and responded with the specified status and headers.')
})
.on('data', function(data) {
console.log(data)
console.log(data.toString())
})
.on('end', function() {
console.log('End')
})