如何转换从 S3 存储桶检索到的流以将其用作我的 React 前端中的 jpeg 图像?

How do I convert a stream retrieved from S3 bucket to use it as jpeg image in my React frontend?

我有一个非常具体的问题,似乎在整个互联网上都得到了解答,但我现在已经花了 2 天时间试图解决它,不幸的是我就是做不到。这是我的问题:

����JFIF����

.!!.)1(%(1)I9339ITGCGTf[[f�z����

.!!.)1(%(1)I9339ITGCGTf[[f��z������Jp"������z����Rբ����@BD��"I$��mU �UR��D$��I$趭�UZR���/S�?g0�BDI$��t[V��JQ@������ז9��y��^�DD"$� $����T��)@(��;����0��k������@@AHDH������Uj��������&l������!" I#�j�UUB���q�%�n�e�/���!"H�N�V��JP(?zL� ��uc��=����( A!"Io��Z��)J(��~7��u��z<��?|��H@DB"$��F��V��UE(�� ��=N罽[7厝:y����1��w��P�`A!�D��7�V�QJR��㟝�z}�tvl����������} _����H�"H��mU�� U����痱��l����t��p��=Z|��6��Sd��@��"$H��t-����)E��´l��{v������ f:<��y������A��"I����J*��~]��?_����>������.]\z5x����}����DI $����TP(?��7O��f��ٷ��������<��;��@A

等等等等,字符串明显要长很多

从网上的所有阅读来看,我似乎明白这是一个流,为了在我的 React 前端显示为 jpeg 图像,需要将其转换为 Base64,并且此转换的结果需要是用作 .这个对吗?我已针对此问题尝试了多种解决方案,但 none 有效。这是我尝试过的一个示例,它与我在网上看到的所有其他解决方案非常相似,none 其中有效:

let buf = Buffer.from(rsp.data)
let base64 = buf.toString('base64')
let convImage = <img src={`data:image/*;base64,${rsp.data}`} alt='' />
// And then render convImage

我花了很多时间试图解决这个问题,这似乎是一个很简单的问题,但我就是想不通。我将不胜感激任何帮助来完成我正在尝试做的事情。问题:

谢谢

我终于自己解决了这个问题。解决方案与我在网上看到的大多数建议的方向不同,我在这个 URL 中找到了它: https://simplernerd.com/js-image-binary-jfif/

我将这些行添加到我的代码中,我通过 Axios 收到的响应现在可以显示在我的 React 前端中:

axiosClient.get(route, {responseType: 'blob', params})  // had to add responseType to the axios config
    
    .then((rsp) => {
        const url = URL.createObjectURL(rsp.data) // where rsp is the response
        var image = <img src={url} alt='' /> // <img/> can now use the url object to display the image, and var image can now be rendered by React            
    }

    .catch((err) => {
        console.log('Error receiving rsp')
    })