我正在嘗試使用 Google Apps Script (GAS) 將檔案上傳到 IPFS 節點,但沒有成功。但是,我能夠使用 Postman 成功上傳檔案。不幸的是,Postman 只將最接近 GAS 的源代碼片段作為 JavaScript - Fetch 代碼回傳,這在 GAS 中無法正常作業。
在 GAS 中,身份驗證部分正在作業,我知道這是因為如果我要更改不記名令牌,則會收到無效憑據錯誤而不是“無效請求格式”。
在我從服務器收到“無效請求格式”錯誤的地方附加了測驗代碼。
出于測驗目的,需要上傳的檔案可以使用腳本即時創建,但最終必須是來自 Google Drive 的檔案。
function test() {
let myHeaders = {'Authorization': 'Bearer ...'};
let fileBlob = Utilities.newBlob('Hello!', 'text/plain', 'TestFile.txt');
let formdata = {'file': fileBlob,
'pinataMetadata': {'name': 'TestFileNewName.txt','keyvalues': {'MetaData1': 'Test1', 'MetaData2': 'Test2'}},
'pinataOptions': {'cidVersion': 0}};
let requestOptions = {
method: 'post',
headers: myHeaders,
papyload: 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);
}
uj5u.com熱心網友回復:
如果您的訪問令牌Bearer ...是使用API?? 的有效值,那么以下修改如何?從官方檔案,我認為在你的情況下formdata,值pinataMetadata和pinataOptions可能需要的是字串型別。
從:
let formdata = {'file': fileBlob,
'pinataMetadata': {'name': 'TestFileNewName.txt','keyvalues': {'MetaData1': 'Test1', 'MetaData2': 'Test2'}},
'pinataOptions': {'cidVersion': 0}};
到:
let formdata = {
'file': fileBlob,
'pinataMetadata': JSON.stringify({ 'name': 'TestFileNewName.txt', 'keyvalues': { 'MetaData1': 'Test1', 'MetaData2': 'Test2' } }),
'pinataOptions': JSON.stringify({ 'cidVersion': 0 })
};
另外,請修改papyload: formdata,為payload: formdata,.
TheMaster的評論已經提到了這一點。
參考:
- 固定檔案
- 獲取(網址,引數)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/367964.html
