2012-11-14 2 views
0

express.js를 사용하고 노드 서버에 대용량 파일을 업로드하기 위해 uploadify를 사용하면 둘 이상의 사용자가 동시에 로그인 할 때를 제외하고 모든 것이 올바르게 작동하며, 그래도 여전히 작동하지만 서버는 한 번에 하나의 파일 만 업로드 할 수 있으므로 다른 사용자가 업로드를 완료 할 때까지 기다려야하므로 너무 용납 될 수 없습니다. 여기 다중 클라이언트는 node.js에서 동시에 파일을 업로드 할 수 없습니다.

여기
exports.upload = function(req, res,next){ 
    // console.log(req.body); 
    // console.log(req.files); 
    var tmp_path = req.files.product_video.path; 
    var target_path = 'F:/shopping/shop/' +req.body.shop_id+'/'+ req.files.product_video.name; 

    fs.rename(tmp_path, target_path, function(err) { 
     if (err) { 
      console.log(err) 
     } 
     else{ 
      fs.unlink(tmp_path, function() { 
       if (err){ 
        console.log(err) 
       }else{ 
        exec("C:/ffmpeg/bin/ffmpeg -i shop/"+ req.body.shop_id+ '/' + req.files.product_video.name + " -ss 00:01:00.00 -r 1 -an -vframes 1 -s 250x150 -f mjpeg shop/"+ req.body.shop_id+ '/' + req.files.product_video.name + "_thumbnail.jpg", function(err){ 

         var data = { 
          'thum_src':'shop/'+ req.body.shop_id+ '/' + req.files.product_video.name + "_thumbnail.jpg", 
          'video_name':req.files.product_video.name, 
         } 
         res.send(data); 
        }); 
       } 
      }); 
     } 

    }); 
}; 

fs.rename가 올바른 경로로 파일을 이동하는 것입니다 때문에 당신의 fs.unlink 전화를하지 필요가 없습니다 프론트 엔드 코드

$('#input_product_video').uploadify({ 
     'formData':{'shop_id':$('#shop_id').val()}, 
     'buttonText' : 'add', 
     'fileSizeLimit' : '100MB', 
     'fileObjName' : 'product_video', 
     'uploader' : '/uploads', 
     'swf'   :'/public/javascripts/lib/uploadify/uploadify.swf', 
     'onUploadSuccess':function(file,data){ 
      console.log(file); 
      console.log(JSON.parse(data)); 
      console.log(response); 

     } 
    }); 

답변

0

입니다 서버 측 코드 복사하므로 fs.rename이 성공하면 임시 파일은 이미 사라집니다. 어쨌든 오류를 확인하지 않는 전체 fs.unlink 블록을 제거하십시오. 그런 다음 코드를 통해 가능한 모든 경로에서 오류가있는 next(err)을 호출하거나 res.send을 호출해야합니다. 여기에 코드 경로가있어 응답하지 않을 것으로 보이며 요청 시간이 초과되도록 할 것입니다. 변경 사항을 확인하고 작동하는지 확인하십시오.

관련 문제