• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 안녕하세요. 선생님. 질문있습니다.

안녕하세요. 선생님. 질문있습니다.

10 글 보임 - 1 에서 10 까지 (총 14 중에서)
  • 글쓴이
  • #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')
                })
                
               
              
                     
              })
            })
          
          })
    
    
    
    
    
    
    #47284

    유정현
    참가자
    선생님 추가적으로 질문이 있는데요.
    <input type="file" name="profile"  multiple required>
    input에서 file 개수를 3개까지 올리게 제한하고 싶은데 자바스크립트로 제한할 수 있는 방법이 있나요? 아니면 server에서 제한을 걸어야하나요?
    어떤 방식으로 제한하는것이 효율적인가요?
     
    #47310

    codingapple
    키 마스터
    var 저장할거 = [];
      for( i=0; i<10 i++{
        저장할거.push(요청.files[i].filename)
    
    하면 될듯요 
    파일갯수는 자바스크립트로 제한해도되고 서버에서 해도 됩니다
    #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" 이라고 오류 메시지가 나옵니다.
    혹시 작성 방법이 틀린건가요? 어느 부분을 고쳐야 할까요 ㅠㅜ ?
     
    #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')
    
    #47436

    codingapple
    키 마스터
     var image 는 반복문 밖으로 뺍시다
    요청.files 부터 잘 있나 출력해보면 됩니다 
    
    #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을 꺼내는건 어떻게 해야하나요?
    #47945

    codingapple
    키 마스터
    출력한게 {} 이거면 점찍는게 맞습니다
    #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') 이런 오류가 같이나옵니다.
     
    이상하네요..
    
    
    
    
    
    
    
    
    		
    	
    #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 }
    
    이럽시다
10 글 보임 - 1 에서 10 까지 (총 14 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠