【发布时间】:2021-09-30 03:17:00
【问题描述】:
var ftpClient = new ftp();
var form = new formidable.IncomingForm();
form.parse(request, function(err, fields, files) {
if (files.shoplogo.name) {
var dimensions = sizeOf(files.shoplogo.path);
console.log(dimensions.width + " x " + dimensions.height);
if (dimensions.width > 255 || dimensions.height > 255 || dimensions.width < 145 || dimensions.height < 145) {
response.send('<script>alert("Das Bild darf nicht größer 250x250 oder kleiner als 150x150 sein."); history.back(); </script>');
return;
}
if (files.shoplogo.size > 200000) {
response.send('<script>alert("Das Bild darf nicht größer als 150 kb sein."); history.back(); </script>');
return;
} else {
var oldpath = files.shoplogo.path;
ftpClient.on('ready', function() {
ftpClient.put(oldpath, '/web/shopContent/' + 'logo_' + fields.shopid + ".jpg", function(err, list) {
if (err) throw err;
ftpClient.end();
});
});
}
}
if (files.shopcover.name) {
var dimensions = sizeOf(files.shopcover.path);
console.log(dimensions.width + " x " + dimensions.height);
if (dimensions.width > 505 || dimensions.height > 505 || dimensions.width < 245 || dimensions.height < 245) {
response.send('<script>alert("Das Bild darf nicht größer 500x500 oder kleiner als 250x250 sein."); history.back(); </script>');
return;
}
if (files.shopcover.size > 200000) {
response.send('<script>alert("Das Bild darf nicht größer als 150 kb sein."); history.back(); </script>');
return;
} else {
var oldpath = files.shopcover.path;
ftpClient.on('ready', function() {
ftpClient.put(oldpath, '/web/shopContent/' + 'cover_' + fields.shopid + ".jpg", function(err, list) {
if (err) throw err;
ftpClient.end();
});
});
}
}
ftpClient.connect({
'host': 'host',
'user': 'user',
'password': 'pw'
});
});
我从头开始编写了一个函数,允许我将图像上传到我的服务器(从客户端),然后将其上传到 FTP 服务器。 如果用户一次选择一张图片,一切正常,但上传两张图片都会中断。
我认为问题在于我如何处理连接。如何调整代码?
【问题讨论】:
-
“休息”是什么意思?抛出异常,什么也没发生,还是什么?如果它抛出,知道在哪一点会很有帮助。另外请注意,如果
files.shopcover.name和files.shoplogo.name两个字段都存在,您将尝试关闭 ftp 连接两次。为了解决这个问题,我建议要么将此函数转换为基于 Promise 的函数,要么在每个条件中调用ftpClient.connect()。
标签: node.js