4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2023년 5월 29일 19:48 #85059
성현찬참가자//react 코드 import React, { useState } from 'react'; import ReactQuill from 'react-quill'; import 'react-quill/dist/quill.snow.css'; import axios from 'axios';
export default function PostWrite() { const [title, setTitle] = useState(''); const [data, setData] = useState(''); const [day1, setDay1] = useState(''); const [day2, setDay2] = useState(''); const [image, setImage] = useState(null);
function handleTitleChange(e) { setTitle(e.target.value); }
function handleDataChange(e) { setData(e.target.value); }
function handleDay1Change(e) { setDay1(e.target.value); }
function handleDay2Change(e) { setDay2(e.target.value); }
function handleImageChange(e) { const image = e.target.files[0]; setImage(image); }
function handleSubmit(e) { e.preventDefault();
const formData = new FormData(); formData.append('title', title); formData.append('day1', day1); formData.append('day2', day2); formData.append('data', data); formData.append('image', image);
axios.post('/add', formData) .then(function (response) { console.log(response.data); // 성공적으로 요청이 처리되었을 때 실행할 코드 작성 }) .catch(function (error) { console.error(error); // 요청이 실패했을 때 실행할 코드 작성 }); }
return ( <div className="page2"> <form onSubmit={handleSubmit} encType="multipart/form-data">
<div className="titleWrap2" style={{ marginTop: '20px' }}> 게시글 작성 </div> <input className="titleWrap3" type="text" placeholder="제목을 입력해 주세요" value={title} onChange={handleTitleChange} name="title" />
<div className='dateWrap2'> <input className="dateWrap" type="date" name="day1" value={day1} onChange={handleDay1Change}></input>~ <input className="dateWrap" type="date" value={day2} onChange={handleDay2Change} name="day2"></input> </div>
<ReactQuill value={data} onChange={handleDataChange} className='reactQuill' name="data" /> <div className='asd'> <input className='imagefile' type="file" accept=".png, .jpg" onChange={handleImageChange} name="image" />
<button className="buttonPostWrite" type="submit"> 제출하기 </button> </div> </form> </div> ); }
//express 코드 const express = require('express'); const app = express(); const bodyParser = require('body-parser'); const Db = require('mongodb/lib/db'); const MongoClient = require('mongoDB').MongoClient; const methodoverride = require('method-override'); app.use(methodoverride('_method'));
var db; MongoClient.connect('mongodb+srv://qor:0989@ais.smqldtl.mongodb.net/?retryWrites=true&w=majority', function(err, client){ if (err) return console.log(err); db = client.db('test');
app.listen('3000', function(){ console.log('listening on 3000') }); });
let multer = require('multer'); var storage = multer.diskStorage({ destination: function(req, file, cb){ cb(null, 'imege') }, filename: function(req, file, cb){ cb(null, file.originalname) } });
app.use(bodyParser.urlencoded({extended: true}));
var path = require('path');
var upload = multer({ storage: storage, fileFilter: function (req, file, callback) { var ext = path.extname(file.originalname); if(ext !== '.png' && ext !== '.jpg' && ext !== '.jpeg') { return callback(new Error('PNG, JPG만 업로드하세요')); } callback(null, true); }, limits: { fileSize: 1024 * 1024 } });
app.use(express.static(path.join(__dirname, 'front/build')));
app.post('/add', function(req, res){ console.log(req.body); db.collection('counter').findOne({name: '계시물갯수'}, function(err, result){ var w_count = result.totalpost; db.collection('qor').insertOne({_id: w_count + 1, 제목: req.body.title, 내용: req.body.data, 날짜1: req.body.day1, 날짜2: req.body.day2}, function(err, result){ console.log('저장완료'); db.collection('counter').updateOne({name: '계시물갯수'}, {$inc: {totalpost: 1}}, function(err, result){ if(err) { return console.log(err); } }); }); }); });
app.post('/add', upload.single('image'), function(req, res){ res.send('업로드완료'); });
app.get('/', function(req, res){ res.sendFile(path.join(__dirname, '/front/build/index.html')); }); 제출하기를 눌렀을때
이렇게 뜨며 mongoDB 에는 저장은 되나
이런식으로 저장이 됩니다 뭐가 문제일까요?
2023년 5월 29일 19:53 #85062
codingapple키 마스터axios({ url: "/url", method: "POST", data: formData }) 로 post 요청해봅시다
2023년 5월 29일 20:37 #85069
성현찬참가자axios.post('/add', formData, { headers: { 'Content-Type': 'multipart/form-data' } }) .then(function (response) { // 요청이 성공한 경우 처리할 로직 console.log(response.data); }) .catch(function (error) { // 요청이 실패한 경우 처리할 로직 console.error(error); });
이걸 axios({ url: "/add", method: "POST", data: formData }) }
로 바꿨는데도 똑같습니다...
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.