javascript - 如何在 React 中显示图像,这些图像作为文件下载并保存在服务器上的文件夹中,文件路径存储在我的数据库中?

标签 javascript node.js reactjs express

简短设置、问题和代码摘要

设置

React.js、Node.js/Express.js 和 PostgreSQL。

我抓取一本书的 ImageUrl,使用 Node.js 下载并将其存储在图像文件夹中的文件中,并将文件路径存储在我的 postgreSQL 数据库中,并且我想在 <img /> 中获取并显示图像。我的 React 前端上的标签。

问题

尽管我可以在 devtool 控制台中 console.log 图像对象,甚至使用图像对象作为 JSON 响应发出成功的 Postman 请求,但通过 API 从数据库获取的图像不会显示。 此外,如果我转到 localhost:3001/image-193x278.png,我什至可以显示图像。 我的<img />标签甚至在开发工具中显示了正确的 Img src 属性 (images\image-193x278.png)

在 devtool-console 中,我收到以下错误: GEThttp://localhost:3002/images/image-193x278.png [HTTP/1.1 404 未找到 0ms]

(注意:我的前端在 localhost 3002 上运行,而我的服务器和前端与 3001 上的代理同时运行,但这不是导致问题的原因)

代码

react 代码

const [image, setImage] = useState([]);

  useEffect(() => {

    async function fetchData() {
      const response = await fetch('http://localhost:3001/test', {
        method: 'GET',
        headers: {
          Accept: 'application/json',
          'Content-Type': 'application/json',
        }
      })
      const data = await response.json();
      console.log(data);
      setImage(data);
    }
    fetchData();

  }, []);

我尝试以两种不同的方式显示它:

<img className={css(styles.Image)} src={image.test_images} alt="" />

{image.map((img) => 
<img className={css(styles.Image)} src={img.test_images} alt="" />)}

服务器端

app.get('/test', async (req, res) => {
    try {
        const image = await testdb.query('SELECT * FROM test_table');
        res.json(image.rows);
    } catch (err) {
        console.error(err);
    }
})

我提供 Express 静态文件

app.use(express.static('images'));

为了以防万一,我什至尝试了两种额外的变体

app.get('/test', express.static(__dirname + '../images'));
app.use(express.static('../images'));

仍然没有成功。 我希望我能尽可能地让自己被理解,并且我将非常感谢为我提供的每一个帮助。

最佳答案

问题出在您的静态文件夹上。静态文件将在 localhost:3002/:filename 处提供。

如果你想让它在 /images 路径下工作,那么你可以将路径添加到静态声明中

app.use('/images', express.static('images'))

然后你可以点击localhost:3002/images/:filename

您可以在此处找到文档:https://expressjs.com/en/starter/static-files.html

关于javascript - 如何在 React 中显示图像,这些图像作为文件下载并保存在服务器上的文件夹中,文件路径存储在我的数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65522336/

相关文章:

javascript - For 循环不会按原始顺序附加到其他 json

javascript - 条件(动态)解构

javascript - 组件应该在什么嵌套级别从 Flux 中的 Stores 读取实体?

javascript - Aptana "Missing semicolon"警告

javascript - JQuery DataTables 不工作方法 Draw();

javascript - 根文件中的 console.log() 以上导入语句在导入之前不执行

javascript 和 css 样式

node.js - 对象函数createServer()没有方法 'bodyparser'

node.js - 应用安全规则访问 Firebase 云存储服务器端

javascript - Recharts 条形图 - 仅在堆叠条形图中的某些条形上有条件地显示标签