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

使用Google Apps Script向IPFS节点上传文件报错如何解决?

问题原因

  • 拼写错误:requestOptions 中的参数名 papyload 拼写错误,正确参数名为 payload
  • Google Apps Script 的 UrlFetchApp 不支持直接传递嵌套对象作为表单数据,Pinata 接口要求 pinataMetadata、pinataOptions 两个参数必须以 JSON 字符串格式提交
  • 你当前的 payload 构造方式不符合 multipart/form-data 的提交要求,GAS 处理带 Blob 的表单提交时会自动生成带正确 boundary 的请求头,无需手动指定 Content-Type

修正后的测试代码

function test() {
  let myHeaders = {'Authorization': 'Bearer 替换为你的Pinata有效密钥'};
  let fileBlob = Utilities.newBlob('Hello!', 'text/plain', 'TestFile.txt');
  let formdata = {
    'file': fileBlob,
    'pinataMetadata': JSON.stringify({'name': 'TestFileNewName.txt','keyvalues': {'MetaData1': 'Test1', 'MetaData2': 'Test2'}}),
    'pinataOptions': JSON.stringify({'cidVersion': 0})
  };

  let requestOptions = {
    method: 'post',
    headers: myHeaders,
    payload: formdata,
    muteHttpExceptions: true
  };

  let url = "https://api.pinata.cloud/pinning/pinFileToIPFS";
  let response = UrlFetchApp.fetch(url, requestOptions);
  let responeText = JSON.parse(response.getContentText());
  Logger.log(responeText);
}

谷歌云端硬盘文件上传替换方法

测试通过后,将生成测试 Blob 的逻辑替换为如下代码即可读取 Drive 内文件上传:

// 替换为你需要上传的谷歌云端硬盘文件ID
const targetFileId = "替换为实际文件ID";
const fileBlob = DriveApp.getFileById(targetFileId).getBlob();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:54:08