javascript - 如何将图像从 Node.js 发送到 React.js?

标签 javascript node.js reactjs amazon-s3 graphicsmagick

我有以下设置,通过该设置,我从其 url 发送图像,进行编辑并发送回上传到 S3。我当前遇到的问题是 S3 上的图像已损坏,我想知道我的代码中是否存在问题导致了该问题。

服务器端:

function convertImage(inputStream) {
    return gm(inputStream)
        .contrast(-2)
        .stream();
}

app.get('/resize/:imgDetails', (req, res, next) => {
  let params = req.params.imgDetails.split('&');
  let fileName = params[0]; console.log(fileName);
  let tileType = params[1]; console.log(tileType);
  res.set('Content-Type', 'image/jpeg');
  let url = `https://${process.env.Bucket}.s3.amazonaws.com/images/${tileType}/${fileName}`;
  convertImage(request.get(url)).pipe(res);
})


客户端:

axios.get('/resize/' + fileName + '&' + tileType)
    .then(res => {
     /** PUT FILE ON AWS **/
      var img = res;

      axios.post("/sign_s3_sized", {
        fileName : fileName,
        tileType : tileType,
        ContentType : 'image/jpeg'
      })
      .then(response => {
        var returnData = response.data.data.returnData;
        var signedRequest = returnData.signedRequest;
        var url = returnData.url;
        this.setState({url: url})

        // Put the fileType in the headers for the upload
        var options = {
          headers: {
            'Content-Type': 'image/jpeg'
          }
        };

        axios.put(signedRequest,img, options)
        .then(result => {
          this.setState({success: true});
        }).bind(this)
        .catch(error => {
          console.log("ERROR: " + JSON.stringify(error));
        })
      })
      .catch(error => {
        console.log(JSON.stringify(error));
    })
})
.catch(error => console.log(error))

在继续之前,我现在可以向您保证,通过此设置上传任何图像减去 convertImage() 都可以,否则图像放在 S3 上时会损坏。

关于图像损坏背后的问题有什么指示吗? 难道我对这里的流的理解还不够吗?如果是这样,我应该改变什么?

谢谢!

编辑1:

我尝试根本不通过graphicsmagick API 运行图像(request.get(url).pipe(res);),但图像仍然损坏。

编辑2:

我最后放弃了,只是将文件从 Node.js 直接上传到 S3;无论如何,事实证明这是更好的做法。

最佳答案

因此,如果您的最终目标是使用 Node Js 将图像上传到 S3 存储桶中,则可以通过使用 multer-s3 来实现简单的方法。 Node 模块。

关于javascript - 如何将图像从 Node.js 发送到 React.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57868817/

相关文章:

javascript - 使用 React hooks 将基于类的组件转换为功能组件

html - 如何使用 bootstrap 和 reactjs

javascript - React JS 服务器端问题 - 找不到窗口

javascript - 应用 js 的多个背景图像仅应用第一个

javascript - 所有选项卡均已显示,但我希望在任何给定时间仅显示一个选项卡

javascript - 即使我使用以太坊官方网页中的示例也无法发送交易

javascript - 当到达文档中的不同点时,导航栏突出显示适当的链接

javascript - react native 语法错误 : Unexpected Token, 预期}

javascript - 在nodejs中断言模块使用?

node.js - 使用 PATCH 修改 Node/ Mongoose 的多个条目?