发布图像并使用节点本地保存

时间:2018-12-01 09:46:49

标签: node.js http-post

我想使用curl将图像发布到节点服务器并本地保存。但是总会有一个标头写入新文件,这会导致原始文件和新文件之间的不一致。这是我的节点端代码:

var http = require('http');
var url = require('url');
var fs = require('fs');

var server = http.createServer(function (req, res) {
    switch (req.method) {
        case 'POST':
            var item = '';
            req.setEncoding('binary');
            req.on('data', function (chunk) {
                console.log('parsed', chunk);
                item += chunk;
            });

            req.on('end', function () {
                //console.log('done parsing');
                fs.writeFile('/var/www/html/hikv.svg', item, function (err) {
                    if (err) throw err;
                    console.log('saved');
                })
                res.end('OK\n');
            });
            break;
        case 'GET':
            fs.readFile('/var/www/html/hikv.svg', function (err, data) {
                res.writeHead(200, {'Content-type:': 'image/svg+xml'});
                res.write(data);
                res.end();
            });
            break;
    }

});

server.listen(3001);

我的curl命令是:

  

curl -s -F“ file=@/root/tmp/hikv.svg” localhost:3001

发布似乎不错,但是文件有些不同。

root@tmp$ diff /var/www/html/hikv.svg ./hikv.svg
1,4d0
< ------------------------------a19948064ecb
< Content-Disposition: form-data; name="file"; filename="hikv.svg"
< Content-Type: application/octet-stream
<
7475,7476d7470
<
< ------------------------------a19948064ecb--

任何指针都指出我错了吗?非常感谢

0 个答案:

没有答案