我使用的是axios和form-data NPM包上传本地文件。
这里是基本的代码结构:
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
访问它,我宁愿做fs.createReadStream
相当于上的文件,而它在云存储。
在谷歌云存储NPM包,File
有一个名为createReadStream方法,但是当我插入我的代码,没有工作。
有没有一种方法来实现这一目标?
从你所指出的方法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')
})