如何使用 reactjs 从服务器路径检索图像

How to retrieve images from server path using reactjs

我有一个 api 看起来像这样 :

{
        "id": 9,
        "fullnames": "JOHN DOE",
        "email": "johndoe@gmail.com",
        "status": "Active",
        "directreport": null,
        "date_created": "2021-11-01T09:29:33.000+0000",
        "date_updated": "2022-03-22T12:42:50.000+0000",
        "view": true,
        "lineManager": 43,
        "accessLevel": "Level1",
        "lastLogIndate": "06-Apr-2022 13:08:06",
        "userPicture": "../media/strongnightstand.png",
    }

userPicture 是 link 服务器中存储所有图像的目录。我试图将 link 作为图像源,但图像不显示。我的构建文件在 /var/www/html/stratex 中,我的服务器 conf 文件的文档根目录也在 /var/www/html/stratex 图片位于 /var/www/html/media 目录中。 我的代码如下所示:

const [avatar, setAvatar] = useState("");

 useEffect(() => {
    if(myuser) {
      setName(myuser.fullnames);
      setEmail(myuser.email);
      setTeamId(myuser.team);
      setId(myuser.id);
      setAvatar(myuser.userPicture);
    }
    
 }, [myuser]);

<CardAvatar profile>
    { avatar == null || avatar == undefined || avatar === '' || avatar == "null" ? ( <img src={Avatar} alt="..." /> )
    : avatar ? ( <img src={avatar} alt="..." /> )
    : (<img src={Avatar} alt="..." /> )}

</CardAvatar>

将图像存储在数据库中不是一种选择,因为它们会降低站点速度。 任何关于我做错的 advice/help 将不胜感激。谢谢

对于您的 React 项目,根级别位于 /stratex,没有比这更高的了。 一个快速的解决方案是将图像存储在与您的 React 项目相同的根目录中。

/var/www/html/stratex/image/

并使用 ./media/strongnightstand.png 访问它。

另一种选择是将您的媒体配置为独立服务器。 示例:https://www.example.com/media/strongnightstand.png

这可能会使您的项目更加复杂,但对于大型项目来说,分离媒体存储是理想的选择。

最后一个选项(与上述类似)是使用第三方服务(例如 cloudinary.com、AWS S3...)