通过react按钮将文件发送到node.js服务器

bxgwgixi  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(327)

我遇到了一个问题。我通过点击按钮打开对话框来实现加载化身的过程。选择文件后,会将其发送到后端。处理程序已经写在上面了,它们正在工作。这段代码打开一个窗口,提交一个表单,但是。。。什么也没发生。我甚至不知道如何检查请求是否发送到服务器,因为提交表单会重新加载页面。
客户部分

  1. import React, { useRef } from "react";
  2. import { logout } from "../../Redux/Auth/Auth-operations";
  3. import { useDispatch } from "react-redux";
  4. import { useSelector } from "react-redux";
  5. import { getNickname } from "../../Redux/selectors";
  6. import styles from "./LogOut.module.css";
  7. import anonym from "../../img/anonymGit.png";
  8. export default function LogOut({ id }) {
  9. const nickName = useSelector(getNickname);
  10. const inputAvatar = useRef();
  11. const formAvatar = useRef();
  12. const dispatch = useDispatch();
  13. const handleLogout = (e) => {
  14. e.preventDefault();
  15. dispatch(logout(id));
  16. };
  17. return (
  18. <div>
  19. <form id="file" ref={formAvatar}>
  20. <span>
  21. <input
  22. id="file"
  23. type="file"
  24. action="/avatars"
  25. method="POST"
  26. ref={inputAvatar}
  27. className={styles.avatarInput}
  28. onChange={() => {
  29. formAvatar.current.submit();
  30. // console.log("Инпут с файлом", inputAvatar);
  31. }}
  32. />
  33. <button
  34. type="button"
  35. className={styles.avatarChoose}
  36. onClick={() => inputAvatar.current.click()}
  37. >
  38. <img src={anonym} className={styles.anonym} alt="" />
  39. </button>
  40. {nickName}
  41. </span>
  42. </form>
  43. <button onClick={handleLogout} className={styles.logOutBtn}>
  44. Logout
  45. </button>
  46. </div>
  47. );
  48. }

服务器部件

  1. const express = require("express");
  2. const quard = require("../../helpers/guard");
  3. const path = require("path");
  4. const multer = require("multer");
  5. const { verifyToken } = require("../../helpers/tokenAuth");
  6. const tempdir = path.join(process.cwd(), "temp");
  7. const uploaddir = path.join(process.cwd(), "upload", "images");
  8. const storage = multer.diskStorage({
  9. destination: (req, file, cb) => {
  10. cb(null, "temp");
  11. },
  12. filename: (req, file, cb) => {
  13. cb(null, file.originalname);
  14. },
  15. limit: {
  16. filesize: 1024000,
  17. },
  18. });
  19. const uploadMiddleware = multer({ storage });
  20. const { userCtrl } = require("../../controllers/userCtrl");
  21. const router = express.Router();
  22. router.post("/registration", express.json(), userCtrl.createUser);
  23. router.post("/login", express.json(), userCtrl.login);
  24. router.post("/logout", express.json(), userCtrl.logout);
  25. router.post(
  26. "/user/messages/send",
  27. verifyToken,
  28. express.json(),
  29. userCtrl.sendMessage
  30. );
  31. router.get("/user/messages", verifyToken, express.json(), userCtrl.getMessages);
  32. router.get(
  33. "/users/current",
  34. verifyToken,
  35. express.json(),
  36. userCtrl.findUserByToken
  37. );
  38. router.get("/messages/", userCtrl.fetchMessages);
  39. router.post(
  40. "/avatars",
  41. uploadMiddleware.single("cloudAvatar"),
  42. userCtrl.cloudAvatar
  43. );
  44. // router.post(
  45. // "/profile",
  46. // uploadMiddleware.single("avatar"),
  47. // userCtrl.addAvatar
  48. // );
  49. module.exports = router;

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题