2012-04-17 12 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. あなたが今やっているとして、それを提出しますが、フラッシュメッセージを設定する(http://github.com/visionmedia/express-messagesを見て)と、いずれかのフォームページres.render、またはフォーム機能に
  3. now.jsまたは同様のソリューションをres.redirect。これにより、クライアントサイドはクライアントサイド機能を実行するためにサーバサイド機能とサーバサイドコードを使用できます。あなたがすることは、サブミットし、サーバー側の機能にポスト値を渡し、それを処理しクライアント側の機能をトリガーする(メッセージを表示する)

私のお金のオプション#2はおそらく最も安全な賭けですjavascriptが有効になっていないクライアントでも使用できるようになります。ユーザビリティ#1または#3は、エンドユーザにもっと合理的な外観を与えるでしょう。

1

WebSocketを使用できます。私は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

関連する問題