2012-02-28 4 views
1

node.jsでスーパーシンプルファイルサーバーを構築していますNode.jsファイルが正常に動作しない

私は(正しいパスワードを使用して)ファイルをアップロードしようとすると、私はaccessible here.

である私のサーバーをホストするdotcloudを使用しています、私のコードは'Error, incorrect password!'を返します。以下のコードを見てみましょう、と私は理由を説明しましょう:

var success = false; 
     var form = new formidable.IncomingForm(); 
     form.parse(req, function(err,fields, files) { 
      console.log("Password: " + fields.password); 
    if(fields.password!="poop") { 
     return; 
    } 
     fs.rename(files.upload.path, files.upload.name, function (err) { }); 
     success = true; 
      res.writeHead(200, {'content-type': 'text/plain'}); 
      res.write('received upload:\n\n'); 
      res.end(); 
     }); 
     req.on('end', function() { 
      // empty 200 OK response for now 
     if(success) { 
       res.writeHead(302, { 'location': '/' }); 
      } else { 
     res.writeHead(200, {'content-type': 'text/plain'}); 
       res.write('Error, incorrect password!\n'); 
     } 
      res.end(); 
     }); 

は、私は、成功の変数がないように私のコードは「fs.rename(ファイル.....」)で失敗していると思いますtrueに設定します。私のコードはローカルのnode.jsのインストールで動作しますが、dotcloudなどの書き込み権限を要求する必要がありますか?

+0

P.S.私はアップロードをするために猛威を振るっています。 –

+1

はい、ノードアプリケーションがホストシステムに書き込んでいる場合は、ドットクラウドから書き込み許可を要求する必要があります – jcolebrand

+0

どうすればよいですか?迅速な返信をありがとう! –

答えて

0

私は手ごわいフォームを解析し前に、HTTP要求のendイベントが放出されると信じています。

イベントディスパッチの正確な順序は、Node.jsのドキュメントでは定義されていません。 Node.jsのバージョンやプラットフォームによっては、異なる順序で処理される可能性があります。

この場合、successfalseで、実際にフォームを解析する前に返信を送信します。

代わりにフォーム解析関数でエラーを処理する必要がありますか?

関連する問題