2016-08-18 3 views
0

Я использую сервер Node.js и сохраняю изображения на сервере без расширения файла (имя изображения - это просто номер) есть ли способ узнать тип MIME этого вида изображений? Мне нужно, так как браузер загружает изображение, а не открывает его в браузере.Как найти MIME-тип изображения, который не имеет расширения?

Я использую пакет gm (GraphicsMagick) для записи текста на изображение и сохраняю его в папку без расширений. когда я отправляю этот путь через res.sendFile('project root/uploads/cache/1'), браузер не понимает его изображения и загружает его, я хочу, чтобы он открыл его на той же вкладке

Я также пробовал настройку image/*, браузер просто загружает изображение, я не уверен, что этот вид API может быть использован в приложении React-Native без проблем.

ответ

1

Предполагая, что вы используете в качестве multer при загрузке файла промежуточного слоя:

Router.js

multer = require('multer'), 

storage = multer.diskStorage({ 
    // Configuring multer to upload towards the public/uploads map 
    destination: function(req, file, cb) { 
     cb(null, 'public/uploads') 
    }, 
    // Rename the file, so we can create a reference to save in the database. 
    filename: function(req, file, cb) { 
     var ext = file.originalname.split('.') 
     cb(null, 'upload-' + Date.now() + '.' + ext[ext.length - 1]) 
    } 

}) 

// Assign the configured storage to the upload. 
upload = multer({ 
    storage: storage, 
}) 

настроить свою память, чтобы переименовать все изображения (как multer делает по умолчанию) в файл - Date.now () и расширение в массиве ext. Таким образом, файл будет сохранен с расширением, и автоматически дает следующий результат:

Example how it looks when uploaded

+0

я извиняюсь я не упомянул об этом раньше, я не использую multer или любые многокомпонентные данные формы, я использую г (GraphicsMagick) для записи текста на изображение и сохраните его в папку без расширений. когда я отправляю этот путь через 'res.sendFile (__ dirname + '/ uploads/cache/1')', браузер не понимает его изображение и загружает его, я хочу, чтобы он открыл его на той же вкладке –

1

Один подход, который уже сделал для вас в библиотеке (я не тратить слишком много времени Узел): создать карту сигнатур файлов для расширений и запросить его с помощью первых шести шестнадцатеричных цифр загруженного файла.

Хороший источник подписей файлов (так называемые «магические числа») и их расширения: https://en.wikipedia.org/wiki/List_of_file_signatures

Смежные вопросы