Ftp 如何使Google云存储解压为gzip文件?

Ftp 如何使Google云存储解压为gzip文件?,ftp,google-cloud-storage,gzip,Ftp,Google Cloud Storage,Gzip,我正在从FTP服务器检索一个Gzip csv文件,并将其存储在Google云存储中。我需要另一个GCP服务Dataprep来读取此文件。Dataprep仅适用于csv,它无法动态解压缩 那么,正确的解压方法是什么呢?这是我的密码: 从“ftp”导入ftp客户端 const file=bucket.file(路径) var ftpServer=新的FTPClient() ftpServer.on('ready',()=>{ ftpServer.get('/file.gz',(err,stream)

我正在从FTP服务器检索一个Gzip csv文件,并将其存储在Google云存储中。我需要另一个GCP服务Dataprep来读取此文件。Dataprep仅适用于csv,它无法动态解压缩

那么,正确的解压方法是什么呢?这是我的密码:

从“ftp”导入ftp客户端
const file=bucket.file(路径)
var ftpServer=新的FTPClient()
ftpServer.on('ready',()=>{
ftpServer.get('/file.gz',(err,stream)=>{
如果(错误)抛出错误
stream.once('close',()=>{
ftpServer.end()
解析(真)
})
水管(
file.createWriteStream({
可恢复性:错误,
公众:错,,
gzip:是的
})
)
})
})
ftpServer.connect({
主持人:“somehost.com”,
用户:“用户”,
密码:'********'
})
我见过。我不确定这是否是最佳解决方案。据我所知,该代码将读取文件,将其加载到我的服务器内存中,然后将其写回。这似乎是对内存和流量的巨大浪费。有更好的解压方法吗?

找到了。我用

从“zlib”导入zlib
...
const unzippers=zlib.createGunzip()
流。管道(无拉链)。管道(
file.createWriteStream({
可恢复性:错误,
公众:错,,
gzip:是的
})
)
...

我认为您不需要存储未压缩的文件。您需要设置正确的内容类型和内容编码(通过选项
gzip:true
自动设置为gzip),类似于


 stream.pipe(
      file.createWriteStream({
        contentType: 'text/plain',
        resumable: false,
        public: false,
        gzip: true
      })
    )

如果请求者没有在头中设置头
Accept encoding:gzip
,则文件将以未压缩的方式提供。这是您可以演示如何在Google云存储上编写文件吗?我猜正确的内容类型是纯文本正确的?
file.createWriteStream()
是将文件写入GCS的代码。