यह मेरी सरल एक्सप्रेस सेवा है:

let express = require('express'),
    fs      = require('fs'),
    path    = require('path');

var app = express();
app.set("json spaces", 2);
app.use(express.static(__dirname + "/static"));

app.use(function(req, res, next) {
  var data = new Buffer('');
  req.on('data', function(chunk) {
      data = Buffer.concat([data, chunk]);
  });
  req.on('end', function() {
    req.rawBody = data;
    next();
  });
});

app.post("/upload/:filename", function(req, res) {
    let path = "/tmp/" + req.params.filename;
    fs.writeFile(path, req.rawBody, "binary", function(error) {
        res.send({
            message: "sadfasdf"
        });
    });
});

app.listen(3001, function() {
    console.log("Started!");
});

मैं बाइनरी डेटा अपलोड करने के लिए ऐसा कर रहा हूं:

curl -H "Content-Type: application/octet-stream" -X POST http://localhost:3001/upload/test.tiff -d @/home/vagrant/test.tiff

लगभग 1100kb की फ़ाइल के लिए, यह वास्तव में केवल 622kb के बारे में ही लिखेगी। क्या कोई मुझे बता सकता है कि क्या गलत हो रहा है?

0
Mike Thomsen 2 मई 2017, 20:11
अनुरोध स्ट्रीम को पथ पर क्यों पाइप करें जब आप अगली पंक्ति पर उसी पथ पर भी लिख रहे हों?
 – 
peteb
2 मई 2017, 20:41
वह पहले के अंक से कुछ कॉपी पास्ता था। मुझे इसे बाहर निकालने की जरूरत है।
 – 
Mike Thomsen
2 मई 2017, 21:06

1 उत्तर

सबसे बढ़िया उत्तर

जिस तरह से मैं curl का उपयोग कर रहा था, वह समस्या थी। मैं -d का उपयोग कर रहा था और इसके बजाय --data-binary का उपयोग करना चाहिए था।

0
Mike Thomsen 2 मई 2017, 21:14