как автоматически заменять имена файлов на md5 имена в node js
Ответы
Ivan Gagarinov
27 ноября 2024
Пример кода, который реализует замену:
import fs from 'fs';
import path from 'path';
import crypto from 'crypto';
// Функция для получения MD5-хеша файла
function getMD5Hash(filePath) {
const fileBuffer = fs.readFileSync(filePath);
return crypto.createHash('md5').update(fileBuffer).digest('hex');
}
// Функция для переименования файлов на MD5 хеши
function renameFilesToMD5(dirPath) {
fs.readdir(dirPath, (err, files) => {
if (err) {
return console.error('Ошибка чтения директории:', err);
}
// Обработка каждого файла в директории
files.forEach(file => {
const filePath = path.join(dirPath, file);
fs.stat(filePath, (error, stats) => {
if (error) {
return console.error('Ошибка получения информации о файле:', error);
}
// Проверяем, является ли это файлом
if (stats.isFile()) {
const md5 = getMD5Hash(filePath);
const newFileName = `${md5}${path.extname(file)}`;
const newFilePath = path.join(dirPath, newFileName);
// Переименовываем файл
fs.rename(filePath, newFilePath, (renameErr) => {
if (renameErr) {
return console.error('Ошибка переименования файла:', renameErr);
}
console.log(`Файл ${file} переименован в ${newFileName}`);
});
}
});
});
});
}
// Укажите путь к директории с файлами
const directoryPath = './path/to/your/directory';
renameFilesToMD5(directoryPath);
getMD5Hash: Эта функция принимает путь к файлу, считывает его содержимое и создает MD5-хеш с помощью модуля crypto
.
renameFilesToMD5: Эта функция читает файлы из заданной директории и для каждого файла:
- Проверяет, является ли он файлом (не директорией).
- Генерирует его MD5-хеш.
- Переименовывает файл, добавляя расширение.
Путь к директории: Измените строку const directoryPath = './path/to/your/directory';
на путь к вашей директории.
Перед выполнением этого кода убедитесь, что у вас есть резервная копия файлов, так как они будут переименованы. Код не проверяет, существует ли файл с тем же MD5-хешем. Если это будет происходить, вам необходимо будет обрабатывать возможные конфликты, например, добавляя счетчик к имени файла.
0
0