我使用multer在restful上实现了express上传示例。 以下代码是服务器代码。
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './files/')
},
filename: function (req, file, cb) {
crypto.pseudoRandomBytes(16, function (err, raw) {
cb(null, raw.toString('hex') + Date.now() + '.xsd');
});
}
});
var cpUpload = multer({ storage: storage, limits: {fileSize: 1000000}}).single('schema-file');
var app = express();
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS');
next();
});
app.post('/ws-api-designer-upload-files', cpUpload, function (req, res, next) {
console.log("filepath " + req.file.filename);
cpUpload(req,res,function(err){
if(err){
res.set('Content-Type', 'application/json');
res.end(JSON.stringify({
status: 'ERROR 1',
description: err.message
}));
return;
}else{
res.set('Content-Type', 'application/json');
res.end(JSON.stringify({
status: 'SUCCESS 1',
description: 'success'
}));
return;
}
});
});
但是当我使用邮递员调用此服务时,文件被上传但是当我在上传文件之间比较原始文件时,上传的文件已损坏。我在这个问题上挣扎了将近一周,请帮助。
请注意,在Windows Server 2008 r2上运行代码时会出现此问题。因此,当我在localhost上运行此服务器代码时,没有任何问题,如损坏的文件。我只上传了一个173kb的xsd文件。
这是上传文件(已损坏) uploaded file
这是原始文件 original file