2017-02-01 4 views
1

ExpressJSでenctype="multipart/form-data"フォームタイプを使用する際によくある問題と考えています。ミドルウェアがない場合、req.body(またはbodyParser)はこのフォームタイプを処理しません。その結果、私のフィールドにnullの値をPOSTリクエストで送信しています。私のフォームにはファイルアップロードセクションがありますが、これはmultipartを使用しており、multermulter-s3モジュールを使用して、イメージアップロードをs3バケットに処理していますが、multerや他のモジュールを使用する方法がわかりません私のMysql(Sequelize ORM)データベースにフィールド値を格納します。いずれにしても、multerがこのタイプのフォームアップロードに使用する適切なモジュールであるかどうか、またモジュール固有の方法でreq.bodyを交換することができるドキュメントを指しているかどうかについてのガイダンスはありますか?ExpressJS - フォームを使用してファイルをアップロードするマルチパート原因req.body問題

私のフォームは

<form action="/app/post/create" method="post" enctype="multipart/form-data"> 
    <label for="discovery">Discovery:</label> 
    <textarea id="discovery-text-field" name="discovery"></textarea> 
    </br> 
    <label for="report-link">Link to Report:</label> 
    <input type="textarea" name="reportLink"> 
    <br /> 
    <label for="file-attachment">File Attachment:</label> 
    <input type="file" id="file-input" name="fileUpload[]" multiple> 
</form> 

ルーティングどのように見えるか:

appRoutes.route('app/post/create') 

.post(function(req, res){ 

     models.Post.create({ 
      discovery: req.body.discovery, 
      reportLink: req.body.reportLink, 
      userId: req.user.userId  
     }).then(function(){ 
      req.flash('info', 'Post was successfully created.'); 
      res.redirect('/app'); 
     }); 
    }); 

答えて

0

私はあなたがデータを送信するためにAJAXをしようとしているかはわからないが、私はAJAXは、マルチフォームを送信するために得ることができませんでしたMulterを幸せにする方法で正しくデータここで私はExpressとMulterで何を使用しています。以下は、サーバーにフォームの値をアップロードするために使用できるJQueryです。次に、値を操作してサーバー側に保存することができます。

app.post('/express/route', upload.array(), function (req, res, next) { 
    console.log(req.body); 
} 

<script language="JavaScript"> 
    $(document).ready(function() { 
     $(".submitButton").click(function() { 
      var values = { 
       fields: $("#IDs").val() 
      }; 
      var http = new XMLHttpRequest(); 
      http.open("POST", '/express/route', true); 
      // stuff into a form 
      var form = new FormData(); 
      form.append('values', JSON.stringify(values)); 
      // send data to server 
      http.send(form); 
     }); 
    }); 
</script> 

サーバー側は今、あなたはあなたの(私は単一のフォームまたは非マルチフォームを呼ぶもの)値サーバ側を持っています。

現時点では私はMongoをSQLではなく使用していますので、それは私が手助けする限りです。インストール可能なパッケージがあると確信しています(SQL用にnpmjs.comを検索します).SQLとのインターフェイスが可能になりますが、現在MongoはNodeJSで人気が高いようです。 MEANスタックを構築するときに参照用に使用するリンクは次のとおりです。http://www.dotnetcurry.com/nodejs/1032/nodejs-apps-in-visual-studio-mean-stackMEAN stack Visual Studioがあり、NPMをVSに組み込みたい場合にも便利です。

関連する問題