Avatar已保存到MongoDB,但没有成功消息和在组件中渲染头像。使用React和Multer。
创始人
2024-11-12 20:30:42
0

要将Avatar保存到MongoDB并在React组件中渲染头像,您可以使用React和Multer库来实现。Multer是一个用于处理上传文件的中间件,而MongoDB是一个流行的NoSQL数据库。

以下是一个示例解决方案:

  1. 安装所需的库:

    npm install express multer mongoose
    
  2. 创建一个Express服务器并设置Multer中间件以处理文件上传:

    // server.js
    
    const express = require('express');
    const multer = require('multer');
    
    const app = express();
    
    // 设置Multer中间件
    const storage = multer.diskStorage({
      destination: (req, file, cb) => {
        cb(null, 'uploads/'); // 指定文件存储目录
      },
      filename: (req, file, cb) => {
        cb(null, file.originalname); // 使用原始文件名作为保存的文件名
      },
    });
    
    const upload = multer({ storage });
    
    // 处理文件上传的路由
    app.post('/upload', upload.single('avatar'), (req, res) => {
      res.json({ message: 'Avatar上传成功!' });
    });
    
    // 启动服务器
    app.listen(3000, () => {
      console.log('服务器已启动!');
    });
    
  3. 创建一个React组件,用于显示上传的头像:

    // Avatar.js
    
    import React, { useState } from 'react';
    
    const Avatar = () => {
      const [avatarUrl, setAvatarUrl] = useState('');
    
      const handleFileUpload = (event) => {
        const file = event.target.files[0];
        const formData = new FormData();
    
        formData.append('avatar', file);
    
        fetch('/upload', {
          method: 'POST',
          body: formData,
        })
          .then((response) => response.json())
          .then((data) => {
            console.log(data);
            setAvatarUrl(`/uploads/${file.name}`);
          })
          .catch((error) => {
            console.error(error);
          });
      };
    
      return (
        
    {avatarUrl && Avatar}
    ); }; export default Avatar;

    在上面的代码中,我们使用fetch函数将文件上传到Express服务器,并将服务器的响应设置为图片的URL。然后,我们使用img标签在组件中渲染头像。

  4. 在React应用程序中使用Avatar组件:

    // App.js
    
    import React from 'react';
    import Avatar from './Avatar';
    
    const App = () => {
      return (
        

    上传头像

    ); }; export default App;

    在上面的代码中,我们将Avatar组件导入到App组件中,并在页面上显示它。

  5. 运行React应用程序:

    npm start
    

    运行Express服务器:

    node server.js
    

    现在,当您选择一个文件上传时,它将被发送到Express服务器并保存到MongoDB。然后,服务器将返回成功消息,并且Avatar组件将在页面上渲染头像。

请注意,上述代码仅为示例,您需要根据自己的需求进行调整和改进。特别是,您可能需要在MongoDB中设置模型和连接,以便正确保存和检索Avatar数据。

相关内容

热门资讯

据悉!开心泉州小程序辅助哪里查... 据悉!开心泉州小程序辅助哪里查看!果然有挂辅助脚本(有挂解密)-哔哩哔哩1、开心泉州小程序辅助哪里查...
今日!随意玩最新跳转链接有辅助... 今日!随意玩最新跳转链接有辅助吗!原来真的是有辅助app(有挂实锤)-哔哩哔哩随意玩最新跳转链接有辅...
现有说明如下!皮皮跑子胡子修改... 现有说明如下!皮皮跑子胡子修改器!切实有挂辅助修改器(果真有挂)-哔哩哔哩1、皮皮跑子胡子修改器免费...
刚刚!微乐河南家乡麻将辅助脚本... 刚刚!微乐河南家乡麻将辅助脚本!一直真的是有辅助挂(有挂秘诀)-哔哩哔哩1、每一步都需要思考,不同水...
据公告内容!开心泉州小程序工具... 据公告内容!开心泉州小程序工具!总是是真的辅助软件(有挂教程)-哔哩哔哩1、游戏颠覆性的策略玩法,独...
为了进一步!激k辅助器有挂吗!... 为了进一步!激k辅助器有挂吗!切实存在有辅助神器(有挂教学)-哔哩哔哩1、下载好激k辅助器有挂吗脚本...
有消息称!中至九江都昌讨赏辅助... 有消息称!中至九江都昌讨赏辅助!一贯存在有辅助脚本(有挂教学)-哔哩哔哩1、完成中至九江都昌讨赏辅助...
这一现象值得深思!大唐开局自动... 这一现象值得深思!大唐开局自动外g挂!本来有挂辅助插件(讲解有挂)-哔哩哔哩大唐开局自动外g挂脚本下...
此事引发网友热议!四川途游小程... 此事引发网友热议!四川途游小程序辅助破解版!好像是真的辅助神器(有挂规律)-哔哩哔哩进入游戏-大厅左...
出现新变化!闲聚大联盟辅助!一... 出现新变化!闲聚大联盟辅助!一直存在有辅助器(有挂教学)-哔哩哔哩闲聚大联盟辅助破解侠是真的助透视。...