2012-04-17 5 views
0

Express와 함께 Node.js에서 파일 업로드 작업을 처리했으며 코드에서 이미지 업로드 여부를 확인합니다.브라우저로 텍스트 보내기

파일이 성공적으로 업로드 된 경우 사용자에게 업로드 양식이있는 HTML 페이지로 직접 메시지를 보내려합니다. 사용자가 업로드하려고 시도한 파일이 이미지가 아니거나 업로드 중에 다른 파일이 발생한 경우에도 마찬가지입니다.

아래 코드는 작동하지만 (res.send ...) 메시지 만 포함 된 새 페이지를 엽니 다.

내 질문은 : 메시지가 HTML 페이지로 직접 보내지도록 코드를 변경하려면 어떻게해야합니까? 그것이 어떤 용도로 사용될 수 있다면, 나는 비취를 사용하고 있습니다.

미리 감사드립니다.

app.post('/file-upload', function(req, res, next) { 
    var fileType = req.files.thumbnail.type; 
    var divided = fileType.split("/"); 
    var theType = divided[0]; 

    if (theType === "image"){ 
     var tmp_path = req.files.thumbnail.path; 

     var target_path = './public/images/' + req.files.thumbnail.name; 

     fs.rename(tmp_path, target_path, function(err) { 
      if (err) throw err; 

      fs.unlink(tmp_path, function() { 
       if (err) { 
        throw err; 
        res.send('Something happened while trying to upload, try again!'); 
       } 
       res.send('File uploaded to: ' + target_path + ' - ' + req.files.thumbnail.size + ' bytes'); 
      }); 
     }); 
    } 

    else { 
     res.send('No image!'); 
    } 

}); 

답변

1

나는 이미 열려있는 브라우저 창에 메시지를 보내려한다는 것을 알고 있습니까?

당신이 할 수있는 몇 가지

,

  1. 아약스는 포스트를 보내 및 반환 정보를 처리합니다.
  2. 당신이 지금하고있는로 제출하지만, 양식 기능에
  3. now.js 또는 유사한 솔루션을 플래시 메시지 (http://github.com/visionmedia/express-messages보고) 및 하나 res.render 양식 페이지, 또는 res.redirect을 설정합니다. 이것은 클라이언트 측이 클라이언트 측 기능을 실행하기 위해 서버 측 기능과 서버 측 코드를 사용할 수있게합니다. 그래서 당신이 할 일은 submit 할 때 post 값을 처리하고 서버 측 함수에 클라이언트 측 함수 (메시지 표시)를 전달하는 것입니다.

제 돈 옵션 # 2는 아마도 가장 안전한 내기 일 것입니다 자바 스크립트를 사용하지 않는 클라이언트는 자바 스크립트를 사용할 수 있습니다. 사용성 # 1 또는 # 3은 최종 사용자에게보다 간소화 된 외관을 제공합니다.

1

웹 소켓을 사용할 수 있습니다. Socket.IO 사용을 권장합니다. 작업하기가 매우 쉽습니다. 클라이언트 측에서는 JavaScript를 사용하여 새 정보를 해당 페이지에 추가하는 이벤트 핸들러를 갖게됩니다.

socket.emit('error', "Something happened while trying to upload, try again!"); 

클라이언트는 사용합니다 :

당신은 다음 예를 들어 서버를 가질 수

socket.on('error', function(data){ 
    //alert? 
    alert(data); 
}); 

http://socket.io/#how-to-use

관련 문제