首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pinata一直拒绝pinFileToIPFS请求。

Pinata一直拒绝pinFileToIPFS请求。
EN

Stack Overflow用户
提问于 2021-11-22 19:38:13
回答 1查看 860关注 0票数 0

我一直试图将一个文件从s3保存到ipfs。

皮纳塔一直告诉我AccessDenied:拒绝访问的的状态代码为403。

当我尝试/testAuthentication端点时,我得到了一个成功的响应。我检查了我的钥匙和秘密,甚至建立了新的帐户,看看是否是一个帐户问题。这是我的密码:

代码语言:javascript
复制
try {

       await axios.get(testURL, {
      
        headers: {
           
            pinata_api_key: apiKey,
            pinata_secret_api_key: apiSecret,
        }
    })
    .then(function (response) {
        //handle response here
        console.log(response)
    })
    .catch(function (err) {
        //handle error here
        console.log(err);
        throw new Error(err)
    });
  
        const request = JSON.parse(event.body);


        for (const [key, value] of Object.entries(request)) {

            console.log(`${key}: ${value}`);

            
            
        }

        let s3 = new AWS.S3();

        let s3Stream = s3
          .getObject({
            Bucket: s3Bucket,
            Key: fileName,
          })
          .createReadStream();

        let data = new FormData();
        data.append('file', s3Stream, {
                filename: fileName //required or it fails
              });

        await axios.post(url, data, {
        maxBodyLength: 'Infinity', //this is needed to prevent axios from erroring out with large files
        headers: {
            'Content-Type': `multipart/form-data; boundary=${data._boundary}`,
            pinata_api_key: apiKey,
            pinata_secret_api_key: apiSecret
        }
    })
    .then(function (response) {
        //handle response here
        return ResponseUtility.Build(200, { Message: "Image was uploaded to IPFS" , url : response});
    })
    .catch(function (err) {
        //handle error here
        console.log(err);
        throw new Error(err)
    });

      
    }
    catch (error) {
  
         return ResponseUtility.Build(500, { Message: error.message });
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-23 08:44:03

原来我试图上传的S3图像并不存在。除此之外,我还必须使用修改我的Axios请求来锁定文件。

,这是我的新代码:

代码语言:javascript
复制
  const pinataSDK = require("@pinata/sdk");
  const FormData = require('form-data');

  var form = new FormData();

    try {

        const pinata = pinataSDK(apiKey, apiSecret);
        pinata.testAuthentication().then((result) => {
            console.log("Authenticated ",result);
        }).catch((err) => {
            console.log(err);
            throw new Error(err)
        });
     
        let s3 = new AWS.S3();
        const request = JSON.parse(event.body);


        for (const [key, value] of Object.entries(request)) {

            console.log(`${key}: ${value}`);

        }

     
        var params = {
            Bucket: s3Bucket,
            Key: fileName
        };
     
    
        try {
          await s3.headObject(params).promise()
          console.log("File Found in S3")
        } catch (err) {
          console.log("File not Found ERROR : " + err)
          throw new Error(err)
        }

        let s3Stream =  s3
          .getObject({
            Bucket: s3Bucket,
            Key: fileName,
          })
          .createReadStream();

         
            form.append('file', s3Stream, {
                filename: fileName //required or it fails
              });
              
              var config = {
                method: 'post',
                url: url,
                'maxBodyLength': 'Infinity',
                headers: {
                  'Content-Type': `multipart/form-data; boundary=${form._boundary}`,
                  'pinata_api_key': apiKey,
                  'pinata_secret_api_key': apiSecret,
                  ...form.getHeaders()
                },
                data: form
              };
              
            let res =  await axios(config)

        
            if (res.status === 200 && res.data)
                return ResponseUtility.Build(200, res.data);
            else
                throw new Error(JSON.stringify({statusCode : res.status, Message : "Error occured while uploading file to IPFS"}))   
            
            }
    catch (error) {
        
         return ResponseUtility.Build(500, { Message: error.message ? error.message : error });
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70071458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档