在提交表单之前获取文件夹大小
get folder size before form submission
你好,我制作了一个表单,它实际上将歌曲上传到服务器文件夹,但我试图找到一种方法来限制文件夹,提示用户他们在提交表单之前达到了限制。
服务器端
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads');
},
filename: function(req, file, callback) {
callback(null, file.originalname);
}
});
var limits = {
files: 100,
fileSize: 50000000
};
var upload = multer({
storage: storage,
fileFilter: function(req, file, callback) {
var ext = path.extname(file.originalname);
if (ext !== '.mp3' && ext !== '.wav' && ext !== '.m4a' && ext !== '.flac' && ext !== '.aac') {
return callback(new Error('You are only allowed to upload audio files.'))
}
callback(null, true)
},limits:limits
}).any('SongFile');
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.post('/api/photo', function(req, res) {
upload(req, res, function(err) {
if (err instanceof multer.MulterError) {
return res.end("Some error occured.");
}else if (err) {
return res.end("You are only allowed to upload audio files.");
}
res.end("Songs are uploaded");
});
});
index.html(表格)
<form id="uploadForm" method="post" action="/api/photo" encType="multipart/form-data">
<input type="file" multiple='multiple' name="SongFile" ><br>
<input type="submit" value="Submit">
<span id = "status"></span>
</form>
将 app.post 函数设为异步并使用 get-folder-size 模块后,它现在工作得很好。
app.post('/api/photo',async (req, res)=> {
try
{
getSize('./uploads/', (err, size) => {
if (err) { throw err;}
else if(size>100000000){
return res.end("Daily upload limit reached!!Cannot upload for now")
}
upload(req, res, function(err) {
if (err instanceof multer.MulterError) {
return res.end("Some error occured.");
}else if (err) {
return res.end("You are only allowed to upload audio files.");
}
res.end("Songs are uploaded");
});
/* console.log('Uploads folder is ' + size / 1024 / 1024).toFixed(2) + ' MB');
*/ });
}catch (error){
}
});
你好,我制作了一个表单,它实际上将歌曲上传到服务器文件夹,但我试图找到一种方法来限制文件夹,提示用户他们在提交表单之前达到了限制。
服务器端
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads');
},
filename: function(req, file, callback) {
callback(null, file.originalname);
}
});
var limits = {
files: 100,
fileSize: 50000000
};
var upload = multer({
storage: storage,
fileFilter: function(req, file, callback) {
var ext = path.extname(file.originalname);
if (ext !== '.mp3' && ext !== '.wav' && ext !== '.m4a' && ext !== '.flac' && ext !== '.aac') {
return callback(new Error('You are only allowed to upload audio files.'))
}
callback(null, true)
},limits:limits
}).any('SongFile');
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.post('/api/photo', function(req, res) {
upload(req, res, function(err) {
if (err instanceof multer.MulterError) {
return res.end("Some error occured.");
}else if (err) {
return res.end("You are only allowed to upload audio files.");
}
res.end("Songs are uploaded");
});
});
index.html(表格)
<form id="uploadForm" method="post" action="/api/photo" encType="multipart/form-data">
<input type="file" multiple='multiple' name="SongFile" ><br>
<input type="submit" value="Submit">
<span id = "status"></span>
</form>
将 app.post 函数设为异步并使用 get-folder-size 模块后,它现在工作得很好。
app.post('/api/photo',async (req, res)=> {
try
{
getSize('./uploads/', (err, size) => {
if (err) { throw err;}
else if(size>100000000){
return res.end("Daily upload limit reached!!Cannot upload for now")
}
upload(req, res, function(err) {
if (err instanceof multer.MulterError) {
return res.end("Some error occured.");
}else if (err) {
return res.end("You are only allowed to upload audio files.");
}
res.end("Songs are uploaded");
});
/* console.log('Uploads folder is ' + size / 1024 / 1024).toFixed(2) + ' MB');
*/ });
}catch (error){
}
});