React-Node의 업로드 폴더에서 이미지에 액세스 할 수 없습니다.

버블 코드

MERN 앱에서 multer를 사용하여 로컬 데이터베이스에 저장된 클라이언트 측 이미지에 액세스하려고합니다. 내 백엔드 폴더의 구조는 다음과 같습니다.

--- api
    --- controllers
    --- model
    --- routes
--- config
    --- db.js
    --- appConfig.js
--- utils
    --- uploads
    --- multerMiddleware.js
--- app.js

로컬 DB에 이미지 업로드 및 저장이 완벽하게 작동합니다. 새 데이터가 생성되면 API 응답에서 클라이언트가 수신 한 데이터에 업로드 된 이미지의 URL이 포함되어 다시 액세스 할 수 있습니다 (예 : 이미지 썸네일 표시).

내 코드는 다음과 같습니다.

App.js

const express = require("express");
const path = require('path');

const app = express();
const directory = path.join(__dirname, '/uploads');
app.use('/uploads', express.static(directory));

require("./config/db/db")();
require("./config/appRoutes/appRoutes")(app);

module.exports = app;

multerFile.js

const multer = require('multer');

const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, __dirname + '/uploads')
    },
    filename: function (req, file, cb) {
        const fileName = file.originalname.toLowerCase().split(' ').join('-');
        cb(null, fileName);
    }
});
const upload = multer({
    storage
});

module.exports = upload;

제어 장치

exports.createService = async (req, res) => {

    const service_name = req.body.main_name;

    const url = req.protocol + '://' + req.get('host');

    let service_pic;
    if (req.file) {
        service_pic = url + '/utils/uploads/' + req.file.filename;
    }

    try {

        const service = new Services({
            _id: new mongoose.Types.ObjectId(),
            service_name,
            service_pic
        });

        const new_service = await service.save();

        res.status(201).json({ message: "New data created", result: new_service });

    } catch (error) {
        console.log(error);
        res.status(500).json({ message: "Internal server error", error });
    }
}

경로를 사용하여 http://localhost:5000/services/allJSON 데이터를 다음과 같이 얻습니다.

{
   createdAt: "2020-09-07T08:25:11.581Z"
   service_name: "TEST"
   service_pic: "http://localhost:5000/utils/uploads/testio-logo-rgb1.png"
   updatedAt: "2020-09-07T08:25:11.581Z"
}

에 액세스하려고 http://localhost:5000/utils/uploads/testio-logo-rgb1.png하면 항상 오류가 반환 "error":{"message":"Route Not found"}}됩니다.. 이미지가 /uploads폴더 에 제대로 저장 되지만 클라이언트에서 여전히 액세스 할 수 없습니다.

무슨 일이 일어나고 있는지 잘 모르겠습니다. 이 문제를 해결하는 데 도움을 주시면 감사하겠습니다.

동한

변경 '/uploads''utils/uploads'

// app.js
const directory = path.join(__dirname, 'utils/uploads');
app.use('/uploads', express.static(directory));

이 코드 블록은에서 엔드 포인트를 제공하는 정적 자산을 설정했습니다 /uploads. 요청이이 엔드 포인트에 도달 할 때마다 서버는 폴더를 찾습니다 /utils/uploads.
예제 요청은 다음과 같습니다.http://localhost:5000/uploads/testio-logo-rgb1.png

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Windows 7에서 Ubuntu의 공유 폴더에 액세스 할 수 없습니다.

분류에서Dev

Ubuntu에서 Root의 홈 폴더에 액세스 할 수 없습니다.

분류에서Dev

Windows 7에서 Ubuntu의 공유 폴더에 액세스 할 수 없습니다.

분류에서Dev

Ubuntu에서 Root의 홈 폴더에 액세스 할 수 없습니다.

분류에서Dev

Linux에서 Windows로 복사 한 폴더에 액세스 할 수 없습니다.

분류에서Dev

이미지를 폴더에 업로드 할 수 없습니다.

분류에서Dev

이미지를 폴더에 업로드 할 수 없습니다.

분류에서Dev

업로드 된 파일에 액세스 할 수 없습니다.

분류에서Dev

내 수업의 메서드에 액세스 할 수 없습니다.

분류에서Dev

/ media / user 폴더의 권한 문제로 인해 외부 미디어에 액세스 할 수 없습니다.

분류에서Dev

/ 이외의 경로에 액세스 할 수 없습니다.

분류에서Dev

이미지-업로드가 응답하지 않고 $ _FILES에 액세스 할 수 없습니다.

분류에서Dev

Clojure의 Java 필드에 액세스 할 수 없습니다.

분류에서Dev

JSON의 특정 필드에 액세스 할 수 없습니다.

분류에서Dev

XML 노드의 @attributes에 액세스 할 수 없습니다.

분류에서Dev

업그레이드 후 "문서"폴더에 액세스 할 수 없음

분류에서Dev

외장 HDD의 일부 폴더 및 / 또는 파일은 Linux에서 액세스 할 수 있지만 macOS 및 Windows에서는 액세스 할 수 없습니다.

분류에서Dev

JailBreak | / private / var / mobile / Library 내의 폴더에 액세스 할 수 없습니다.

분류에서Dev

자산 하위 폴더의 파일에 액세스 할 수 없습니다.

분류에서Dev

ASP.NET은 요청 된 리소스에 액세스 할 권한이 없습니다. 디버그 모드에서 폴더에 액세스 할 수 있지만 IIS에 배포 할 때는 액세스 할 수 없습니다.

분류에서Dev

클릭으로 데스크탑에서만 폴더 / 파일에 액세스 할 수 없습니다.

분류에서Dev

관리자로 실행하면 현재 디렉터리 내의 폴더에 액세스 할 수 없습니다.

분류에서Dev

laravel의 폴더에 업로드 된 이미지를 표시 할 수 없습니다.

분류에서Dev

파일 업로드를 사용하여 node.js의 특정 폴더에 이미지를 업로드 할 수 없습니다.

분류에서Dev

Windows-7의 실행 창에서 시작 항목 폴더에 액세스 할 수 없습니다.

분류에서Dev

프로세스의 명령 패닉이 이미 사용중인 파일에 액세스 할 수 없습니다.

분류에서Dev

다른 폴더에서 PHP 파일에 액세스 할 수 없습니다.

분류에서Dev

Windows 공유에서 암호로 보호 된 폴더에 액세스 할 수 없습니다.

분류에서Dev

Windows에서 관리자 권한으로 폴더에 액세스 할 수 없습니다.

Related 관련 기사

  1. 1

    Windows 7에서 Ubuntu의 공유 폴더에 액세스 할 수 없습니다.

  2. 2

    Ubuntu에서 Root의 홈 폴더에 액세스 할 수 없습니다.

  3. 3

    Windows 7에서 Ubuntu의 공유 폴더에 액세스 할 수 없습니다.

  4. 4

    Ubuntu에서 Root의 홈 폴더에 액세스 할 수 없습니다.

  5. 5

    Linux에서 Windows로 복사 한 폴더에 액세스 할 수 없습니다.

  6. 6

    이미지를 폴더에 업로드 할 수 없습니다.

  7. 7

    이미지를 폴더에 업로드 할 수 없습니다.

  8. 8

    업로드 된 파일에 액세스 할 수 없습니다.

  9. 9

    내 수업의 메서드에 액세스 할 수 없습니다.

  10. 10

    / media / user 폴더의 권한 문제로 인해 외부 미디어에 액세스 할 수 없습니다.

  11. 11

    / 이외의 경로에 액세스 할 수 없습니다.

  12. 12

    이미지-업로드가 응답하지 않고 $ _FILES에 액세스 할 수 없습니다.

  13. 13

    Clojure의 Java 필드에 액세스 할 수 없습니다.

  14. 14

    JSON의 특정 필드에 액세스 할 수 없습니다.

  15. 15

    XML 노드의 @attributes에 액세스 할 수 없습니다.

  16. 16

    업그레이드 후 "문서"폴더에 액세스 할 수 없음

  17. 17

    외장 HDD의 일부 폴더 및 / 또는 파일은 Linux에서 액세스 할 수 있지만 macOS 및 Windows에서는 액세스 할 수 없습니다.

  18. 18

    JailBreak | / private / var / mobile / Library 내의 폴더에 액세스 할 수 없습니다.

  19. 19

    자산 하위 폴더의 파일에 액세스 할 수 없습니다.

  20. 20

    ASP.NET은 요청 된 리소스에 액세스 할 권한이 없습니다. 디버그 모드에서 폴더에 액세스 할 수 있지만 IIS에 배포 할 때는 액세스 할 수 없습니다.

  21. 21

    클릭으로 데스크탑에서만 폴더 / 파일에 액세스 할 수 없습니다.

  22. 22

    관리자로 실행하면 현재 디렉터리 내의 폴더에 액세스 할 수 없습니다.

  23. 23

    laravel의 폴더에 업로드 된 이미지를 표시 할 수 없습니다.

  24. 24

    파일 업로드를 사용하여 node.js의 특정 폴더에 이미지를 업로드 할 수 없습니다.

  25. 25

    Windows-7의 실행 창에서 시작 항목 폴더에 액세스 할 수 없습니다.

  26. 26

    프로세스의 명령 패닉이 이미 사용중인 파일에 액세스 할 수 없습니다.

  27. 27

    다른 폴더에서 PHP 파일에 액세스 할 수 없습니다.

  28. 28

    Windows 공유에서 암호로 보호 된 폴더에 액세스 할 수 없습니다.

  29. 29

    Windows에서 관리자 권한으로 폴더에 액세스 할 수 없습니다.

뜨겁다태그

보관