-
글쓴이글
-
2022년 9월 22일 00:05 #47283
유정현참가자이미지 filename을 db로 가져가려고 하는데 아래처럼하면 filename이 없다는오류가 나옵니다.
app.post('/ASsubmit', upload.array('profile', 3),function (요청, 응답) { db.collection('counter').findOne({name : '게시물개수'}, function(에러, 결과){ var 총게시물개수 = 결과.totalAS
for( i=0; i<10 i++{ var 저장할거 = {_id : 총게시물개수 + 1,성함 : 요청.body.asname, 연락처 : 요청.body.asphone, img: 요청.files[i].filename } } db.collection('aslist').insertOne(저장할거, function (에러, 결과) { db.collection('counter').updateOne({name:'게시물개수'},{ $inc: {totalAS:1} },function(에러, 결과){ 응답.redirect('/information') }) }) }) })
-------------------------------------------------- 그래서 아래방식으로 하는데 이렇게 한다면 이미지를 업로드 안했을경우 엑스박스가 나오기때문에 보기에 안좋다는 단점이 있네요 ㅠㅠ
혹시 for문을 활용해서 배열로 이미지 경로를 담는 방법은 없을까요? app.post('/ASsubmit', upload.array('profile', 3),function (요청, 응답) { db.collection('counter').findOne({name : '게시물개수'}, function(에러, 결과){ var 총게시물개수 = 결과.totalAS var 저장할거 = {_id : 총게시물개수 + 1,성함 : 요청.body.asname, 연락처 : 요청.body.asphone, img1: 요청.files[0].filename, img2: 요청.files[1].filename, img3: 요청.files[2].filename } db.collection('aslist').insertOne(저장할거, function (에러, 결과) { db.collection('counter').updateOne({name:'게시물개수'},{ $inc: {totalAS:1} },function(에러, 결과){ 응답.redirect('/information') }) }) })
})
2022년 9월 22일 00:07 #47284
유정현참가자선생님 추가적으로 질문이 있는데요.
<input type="file" name="profile" multiple required>
input에서 file 개수를 3개까지 올리게 제한하고 싶은데 자바스크립트로 제한할 수 있는 방법이 있나요? 아니면 server에서 제한을 걸어야하나요?
어떤 방식으로 제한하는것이 효율적인가요?
2022년 9월 22일 09:54 #47310
codingapple키 마스터var 저장할거 = []; for( i=0; i<10 i++{ 저장할거.push(요청.files[i].filename) 하면 될듯요 파일갯수는 자바스크립트로 제한해도되고 서버에서 해도 됩니다
2022년 9월 22일 20:52 #47402
유정현참가자app.post('/ASsubmit', upload.array('profile', 3),function (요청, 응답) { db.collection('counter').findOne({name : '게시물개수'}, function(에러, 결과){ var 총게시물개수 = 결과.totalAS var 저장할거 = []; for (var i = 0; i < 10; i++){ var 저장할거 = {_id : 총게시물개수 + 1,성함 : 요청.body.asname, 연락처 : 요청.body.asphone} 저장할거.push(요청.files[i].filename) }
db.collection('aslist').insertOne(저장할거, function (에러, 결과) { db.collection('counter').updateOne({name:'게시물개수'},{ $inc: {totalAS:1} },function(에러, 결과){ 응답.redirect('/information') }) }) })
}) 말씀하신대로 작성하였는데 "저장할거.push is not a function" 이라고 오류 메시지가 나옵니다.
혹시 작성 방법이 틀린건가요? 어느 부분을 고쳐야 할까요 ㅠㅜ ?
2022년 9월 22일 21:04 #47403
유정현참가자for (var i = 0; i < 10; i++){ var image = []; var 저장할거 = {_id : 총게시물개수 + 1,성함 : 요청.body.asname, 연락처 : 요청.body.asphone, image : image } image.push(요청.files[i].filename) } 이렇게 하였는데도 filename을 읽을수 없다고 나옵니다... TypeError: Cannot read properties of undefined (reading 'filename')
2022년 9월 26일 21:04 #47941
유정현참가자{ fieldname: 'profile', originalname: '3.png', encoding: '7bit', mimetype: 'image/png', destination: './public/image', filename: '3.png', path: 'public\\image\.png', size: 2508 }
요청.files를 찍어보면 관련 데이터가 잘 나오는데 꼭 filename을 붙이면 undefined가 나오네요 ㅠㅠ files에서 세부적으로 filename을 꺼내는건 어떻게 해야하나요?
2022년 9월 26일 22:06 #47968
유정현참가자let multer = require('multer'); const { serializeUser } = require('passport'); var storage = multer.diskStorage({ destination : function(req, file, cb){ cb(null, './public/image') }, filename : function(req, file, cb){ cb(null, file.originalname) } });
var upload = multer({storage : storage});
moment.tz.setDefault("Asia/Seoul"); app.get('/upload', function(요청, 응답){ 응답.render('upload.ejs') })
app.post('/upload', upload.array('profile', 5), function(요청, 응답){ 응답.send('업로드완료') } ); app.post('/ASsubmit', upload.array('profile', 3),function (요청, 응답) { db.collection('counter').findOne({name : '게시물개수'}, function(에러, 결과){ var 총게시물개수 = 결과.totalAS var image = []
for (var i = 0; i < 10; i++){ var 저장할거 = {_id : 총게시물개수 + 1,성함 : 요청.body.asname, 연락처 : 요청.body.asphone, image : 요청.files[i].filename } } db.collection('aslist').insertOne(저장할거, function (에러, 결과) { db.collection('counter').updateOne({name:'게시물개수'},{ $inc: {totalAS:1} },function(에러, 결과){
응답.redirect('/information') }) }) })
})
------------------------------
console.log(요청.files[i].filename) 찍을때는 터미널에 filename이 모두 나오는데
TypeError: Cannot read properties of undefined (reading 'filename') 이런 오류가 같이나옵니다.
이상하네요..
2022년 9월 27일 09:20 #47992
codingapple키 마스터var image = [] for (var i = 0; i < 10; i++){ image.push(요청.files[i].filename) }
var 저장할거 = {_id : 총게시물개수 + 1,성함 : 요청.body.asname, 연락처 : 요청.body.asphone, image : image } 이럽시다
-
글쓴이글
- 답변은 로그인 후 가능합니다.