1

Express 3.x とノード 1.9 を mongo と gridfs で使用しています。ファイルをアップロードするために gridfrom を使用しましたが、通常のフォーム送信では正常に機能していますが、ajax ベースのフォーム送信では機能していません。私はいくつかのサイトをたどりましたが、助けにはなりませんでした。http://www.davidpirek.com/blog/nodejs-html5-file-uploader

var gridform = require('gridform'),
    mongoose = require('mongoose'),
    mongo,
    db,
    app;


exports.upload_file = function(req, res){
    var conn = mongoose.createConnection();
    conn.open('localhost', 'employee', 27017, function (){
        db             = conn.db;
        mongo          = mongoose.mongo;
        gridform.db    = db; 
        gridform.mongo = mongo;    

        if ('POST' == req.method){              
        var form = gridform();  

      form.parse(req, function(err, fields, files) {
        res.end("File ID:" + files.text.id);
        });
     }
    });
}

上記のコードは、通常のフォーム リクエストに対して正常に機能しています。ただし、ajax フォーム リクエストではありません。以下は、クライアント側の ajax 呼び出しです。

クライアント側

jQuery("form#someform").change(function(event){
    var formData = new FormData();
    formData.append("filePath", document.getElementById("filePath").files[0]);
    var xhr = new XMLHttpRequest();
    xhr.addEventListener("load", function (evt) {
        var obj = jQuery.parseJSON(evt.target.responseText);
        window.location.hash = 'File';
        MVC.message.show({text: obj.message, hideDealy: 2000});
      }, false);
    xhr.open("POST", "/upload_file");
    xhr.send(formData);
});
4

0 に答える 0