Python和Node:图片上传

时间:2018-11-14 03:29:14

标签: node.js python-3.x

我对Python和Node还是很陌生,我试图做一个简单的图像上传。客户端使用Python,服务器端使用Node。图片已上传,看起来大小正确,但是当我尝试打开或预览图片时,出现提示,提示以下内容:

“该文件无法打开。它可能已损坏或使用了预览无法识别的文件格式”

注意*我可以使用multer来使上传生效,请参阅我发布的答案。但是,我仍然想弄清楚为什么图像打开或图像预览失败。

客户代码(在本地测试):

import requests

url = "http://localhost:3000/upload"
image = open('test1.jpg','rb').read()
file = {'file': image}
r = requests.post(url, files=file)

print(r.status_code)
print(r.text)

服务器代码段:

const Fs = require('fs')

...
...
router.post('/upload', (req, res) =>{
        var data = '';
        req.setEncoding('binary');
        req.on('data', function(chunk) {
            data += chunk;
        });

        req.on('end', function(){
            Fs.writeFile("tester.jpg", data, 'binary', function(err) {
                if(err) throw err

                res.send("Image uploaded ...");

            });
        })
})

1 个答案:

答案 0 :(得分:0)

我可以使用multer进行排序:npm multer


var Storage = multer.diskStorage({
    destination: function(req, file, callback) {
        callback(null, "./images");
    },
    filename: function(req, file, callback) {
        callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
    }
});

var upload = multer({
    storage: Storage
}).single('file');

router.post('/upload', (req, res) =>{
    console.log("upload ...");

    upload(req, res, (err) =>{
        if(err){
            console.log(err);
            res.send("Failed")
        }
        else{
            console.log(req.file);
            res.send("Uploaded ...");
        }
    });
})