我对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 ...");
});
})
})
答案 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 ...");
}
});
})