forked from UKSOURCE/cms.hailearning.edu.vn
fix: fix resized image uploads
This commit is contained in:
@@ -66,17 +66,21 @@ async function finalizeUploadedImage(file, req, resizePreset) {
|
||||
}
|
||||
|
||||
const { finalFileName, finalPath } = getFinalUploadTarget(file, req, true);
|
||||
const finalPathMatchesInput = path.resolve(file.path) === path.resolve(finalPath);
|
||||
|
||||
await sharp(file.path)
|
||||
const sourceBuffer = fs.readFileSync(file.path);
|
||||
const optimizedBuffer = await sharp(sourceBuffer)
|
||||
.resize(preset.width, preset.height, {
|
||||
fit: 'contain',
|
||||
background: { r: 0, g: 0, b: 0, alpha: 0 },
|
||||
withoutEnlargement: true,
|
||||
})
|
||||
.webp({ quality: preset.quality })
|
||||
.toFile(finalPath);
|
||||
.toBuffer();
|
||||
|
||||
if (fs.existsSync(file.path)) {
|
||||
fs.writeFileSync(finalPath, optimizedBuffer);
|
||||
|
||||
if (!finalPathMatchesInput && fs.existsSync(file.path)) {
|
||||
try {
|
||||
fs.unlinkSync(file.path);
|
||||
} catch (cleanupError) {
|
||||
|
||||
@@ -34,6 +34,14 @@ const storage = multer.diskStorage({
|
||||
|
||||
// Lấy tên file gốc (sanitize để tránh ký tự đặc biệt)
|
||||
const originalName = file.originalname.replace(/[^a-zA-Z0-9.-]/g, '_');
|
||||
const resizePreset = req.query.resizePreset || '';
|
||||
if (resizePreset) {
|
||||
const parsedOriginalName = path.parse(originalName);
|
||||
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
|
||||
req.uploadFinalFileName = originalName;
|
||||
return cb(null, `${parsedOriginalName.name}.__upload__${uniqueSuffix}${parsedOriginalName.ext}`);
|
||||
}
|
||||
|
||||
const fullPath = path.join(uploadPath, originalName);
|
||||
|
||||
// Kiểm tra nếu file đã tồn tại
|
||||
|
||||
Reference in New Issue
Block a user