как автоматически заменять имена файлов на md5 имена в node js

Аватар пользователя Ivan Gagarinov
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
Познакомьтесь с основами JavaScript бесплатно