inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React로 NodeBird SNS 만들기

로컬 서버에 이미지 등록은 성공했는데, 프론트에서 썸네일 이미지가 보이지 않습니다.

해결된 질문

854

꿈나무

작성한 질문수 7

0

현재상태

1. 이미지 등록을 누르면 서버에 post로 요청한 결과 값을 result로 받아 리덕스에 등록되어있습니다.

2. 네트워크 상태에 위와 같은 메시지가 나오면서 썸네일이 동작되지 않습니다.

3. 오타를 확인해봤지만, 확인하지 못했습니다.

4. 어디가 문제일까요?

postcard.js

const onChangeImages = useCallback(e => {
console.log(e.target.files);
const imageFormData = new FormData();
[].forEach.call(e.target.files, f => {
imageFormData.append("image", f);
});
dispatch({
type: UPLOAD_IMAGES_REQUEST,
data: imageFormData
});
}, []);
// 이미지 업로드 버튼 클릭시, 이미지 업로드할 수 있는 Input이 열리도록
const onClickImageUpload = useCallback(() => {
imageInput.current.click(); // 이미지 업로드 할 수 있는 input form open
}, [imageInput.current]);
return (
<Form
onSubmit={onSubmit}
style={{ margin: "10px 0 20px" }}
encType="multipart/form-data"
>
<Input.TextArea
style={{ height: "120px" }}
value={text}
onChange={onChangeText}
/>
<div>
<input
type="file"
multiple
hidden
ref={imageInput}
onChange={onChangeImages}
/>
<Button onClick={onClickImageUpload}>이미지 업로드</Button>
<Button type="primary" htmlType="submit" loading={isAddingPost}>
Twit
</Button>
</div>
<div>
{imagePaths.map(v => {
return (
<div>
<div>
<Button>삭제</Button>
</div>
<img
src={`http://localhost:3065" + ${v}`}
style={{ width: "200px" }}
alt={v}
/>
</div>
);
})}
</div>
</Form>
);
};

서버 index.js

const express = require("express");
const app = express();
const morgan = require("morgan");
const db = require("./models");
const cors = require("cors");
const cookieParser = require("cookie-parser");
const expressSession = require("express-session");
const dotenv = require("dotenv"); // dotdev 모듈을 불러와서
const passport = require("passport");
const passportConfig = require("./passport");

dotenv.config(); // 실행
db.sequelize.sync();

passportConfig(); // passport index에서 보내주는 함수를 실행
app.use("/", express.static("uploads")); // express 내부의 static이란 미들웨어를 통해
app.use(
cors({
origin: true, //"http://localhost:3000" 로도 가능, 단 서버 재실행 하기
credentials: true
})
); // cors 미들웨어 장착
app.use(cookieParser("nodebirdcookie"));
app.use(
expressSession({
resave: false,
saveUninitialized: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
secure: false
},
name: "rnbck"
})
);
app.use(passport.initialize());
app.use(passport.session());

app.use(morgan("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

const userAPIRouter = require("./routes/user");
const postAPIRouter = require("./routes/post");
const postsAPIRouter = require("./routes/posts");
const hashtagAPIRouter = require("./routes/hashtag");

app.use("/api/user", userAPIRouter);
app.use("/api/post", postAPIRouter);
app.use("/api/posts", postsAPIRouter);
app.use("/api/hashtag", hashtagAPIRouter);

app.listen(3065, () => {
console.log("server is running on http://localhost:3065");
});

서버 post router

const express = require("express");
const router = express.Router();
const db = require("../models");
const multer = require("multer");
const { isLoggedIn } = require("./middleware");
const path = require("path");
const upload = multer({
storage: multer.diskStorage({
destination(req, file, done) {
done(null, "uploads");
},
filename(req, file, done) {
const ext = path.extname(file.originalname);
const basename = path.basename(file.originalname, ext);
done(null, basename + new Date().valueOf() + ext);
}
}),
limits: { fileSize: 20 * 1024 * 1024 }
});
router.post("/images", upload.array("image"), (req, res) => {
console.log(req.files);
res.json(req.files.map(v => v.filename));
});
});

module.exports = router;

javascript react

답변 2

0

꿈나무

부끄럽네요..해결했습니다. 정말 빠른 답변 너무 감사드립니다..갓로초님 늘 감사합니다..

0

제로초(조현영)

이미지 주소 3065 뒤에 / 가 없어서 주소 오류입니다.

next 10 이상에서는 redux dev tool 구동이 안되나요?

0

272

1

세션 갱신 문의 건

0

482

7

배포 진행 후 Highlight updates components render 표시

0

445

1

똑같은 기능을 하는 테이블

0

447

4

관계형

0

312

2

프론트 서버를 이용하지 않는경우

1

299

3

인피니트 스크롤링 사용시 오류

0

278

0

계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.

0

433

2

req.user가 언제 생성되나요??

0

330

2

Cannot read property 'id' of null 에러

0

333

1

리트윗한 게시글 불러오는 sequelize

0

252

1

result.data에서 images인 이유

0

281

2

takeLatest에 대한 질문입니다.

1

342

2

프론트에서 express를 사용하지 않을때 동적라우팅

0

501

6

getInitialProps가 클라이언트에서 수행되는 이유?

0

258

1

리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.

0

445

2

스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다

0

585

2

할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)

0

365

1

nodejs mvc 패턴

0

975

4

사용하고 보니, 람다 구성이 궁금합니다!

0

266

1

제로초님

0

445

1

새로고침 로그인 풀림 문제.

0

247

1

안녕하세요. 강의 너무 감사합니다

0

157

1

제로초님

0

170

1