1

私はnode.jsが初めてです。私がやろうとしているのは、node.js サーバーを介して、Web ブラウザーからクラウド ストレージへのファイルのアップロードをストリーミングすることです。

「express」、「request」、および「busboy」モジュールを使用しています。

var express = require("express");
var request = require("request");
var BusBoy = require("busboy");
var router = express.Router();

router.post("/upload", function(req, res, next) {
    var busboy = new BusBoy({ headers: req.headers });
    var json = {};

    busboy.on("file", function (fieldname, file, filename, encoding, mimetype) {
        file.on("data", function(data) {
            console.log(`streamed ${data.length}`);
        });

        file.on("end", function() {
            console.log(`finished streaming ${filename}`);
        });
        
        var r = request({
            url: "http://<my_cloud_storage_api_url>",
            method: "POST",
            headers: {
                "CUSTOM-HEADER": "Hello",
            },
            formData: {
                "upload": file
            }
        }, function(err, httpResponse, body) {
            console.log("uploaded");
            json.response = body;
        });
    });

    busboy.on("field", function(name, val) {
        console.log(`name: ${name}, value: ${value}`);
    });
    
    busboy.on("finish", function() {
        res.send(json);
    });

    req.pipe(busboy);
});

module.exports = router;

しかし、サーバーで次のエラーが発生し続けます。ここで何が間違っていますか?どんな助けでも大歓迎です。

Error: Part terminated early due to unexpected end of multipart data
at node_modules\busboy\node_modules\dicer\lib\Dicer.js:65:36
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)
4

1 に答える 1