Хранить файл WebM в Redis (NodeJS)
Я ищу решение для сохранения файла WebM в Redis.
Давайте объясним ситуацию:
- Сервер NodeJS получает файл WebM от клиента и сохраняет его в файловой системе сервера.
- Затем он должен сохранить этот файл в Redis, потому что я не хочу управлять Redis и файловой системой тоже. Таким образом, я могу удалить видео только с помощью команды redis.
Я думаю прочитать файл с помощью fs.readFile(), а затем сохранить его в буфере, но я не знаю, какой формат кодирования использовать, и я не знаю, как передать этот процесс, чтобы вернуть видео WebM клиент, когда он делает запрос.
Это хороший способ продолжить? Любое предложение?
PS: я использую грозный для загрузки файла.
РЕДАКТИРОВАТЬ: Я нашел способ продолжить, но есть еще одна проблема:
var file = fs.readFileSync("./video.webm");
client.set("video1", file1, function(){
client.get("video1", function(err, data) {
var buffer = new Buffer(data, 'binary');
// file ≠ buffer
});
});
Это проблема кодирования? Как Unicode/UTF8/ASCII? Может, узел и редис используют разные кодировки?
2 ответа
Решение найдено! Проблема стала при создании объекта client.
Обычно это то, что делается
var client = redis.createClient();
А также return_buffers
Параметр будет установлен как ложный.
В этом случае
var client = redis.createClient(6379, '127.0.0.1', {
return_buffers: true,
auth_pass: null
});
все прошло правильно!;)
это страница вопроса, они помогают мне
Я не знаю много о файлах NodeJS и WebM.
Redis хранит тип C char на 8-битной строке, поэтому он должен быть дружественным к двоичным файлам. Проверьте код и конфигурацию js, чтобы убедиться, что ваш клиент js redis отправляет / получает данные в виде байтового массива, а не в виде строки UTF-8, возможно, в JS данных произошла неправильная конвертация.