You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Zapier JavaScript中获取原始文件字节?

如何从Zapier的Google Drive文件输入中获取原始字节?

我用Google Drive文件创建Zap时,通过bundle.inputData.new_data获取到的不是原始文件字节,而是一段类似这样的内容:

hydrate|||.eJx1jk9zgjAUxL_LOzMd_mmLMz0EoUwt1NGxY-XCxBA1gYQKAYuO373B2mP3uLu_fe8CpJKKSpWp_ovCBBAYwGSjsCQ0YzlMHM_1bHP8aABpG1WJtqH1LbAsZzQau54BmJCq1RN_rqNlwI7RMs8kFsNsTrtsx0qq14sTrvcNTC5wP3n3BVWHSi_Aoc9rrKq6edBvNIdQYFa-tJIoVknd27Yy14Dm6ZC8DghCSYGCD3u-XjgpD614PePJGan3YG-nU3OUiIUdr8I-4RsnORM75UU_R36EbvL3vdik8yXGi-P358YVvFBB75-CuIumZvm07ZZY2hTPrI76_JcJE4T-y8PoaL4tdekZrtfrD1kpc6s:1q14Ki:h48rK3jHmPQcT7ca4T0RPbELNVM|||hydrate

我的代码如下:

const publishData = (z, bundle) => {
    ...
     const data = bundle.inputData.new_data;
     ...
     function publish(record, publisher, host) {...}
}
module.exports = {
...
     operation: {
         inputFields: [
             {key: "methods", label: "Method", choices: {hosted: 'Hosted', ipfs: 'IPFS'}, required: true},
             {key: "new_data", label: "Data", required: false}
         ],
         perform: publishData,
         sample: sample
     },
};

我需要获取原始文件字节来执行哈希函数,试过解码和直接使用都无效,请问该怎么处理?


解决方案

这段带hydrate|||前缀后缀的内容是Zapier的**脱水(dehydrated)**数据,你需要用Zapier内置的z.dehydrate.utility.getRawBody方法还原出原始文件字节。

修改你的代码,在publishData函数中这样处理:

const publishData = async (z, bundle) => {
    // 还原脱水的文件数据为原始字节Buffer
    const rawFileBuffer = await z.dehydrate.utility.getRawBody(bundle.inputData.new_data);
    
    // 直接用Buffer执行哈希计算(示例为SHA256)
    const crypto = require('crypto');
    const fileHash = crypto.createHash('sha256').update(rawFileBuffer).digest('hex');
    
    ...
    function publish(record, publisher, host) {...}
}

关键注意事项

  • 必须将publishData声明为异步函数(使用async/await),因为getRawBody是异步操作
  • getRawBody返回的是Node.js的Buffer对象,可直接传入哈希函数的update方法
  • 无需手动解码那段hydrate字符串,Zapier的工具方法会自动完成所有还原逻辑

内容的提问来源于stack exchange,提问作者Neifi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:38:15