ventajas por node manejo linea leer framework example desventajas contenido con archivos archivo javascript node.js filesystems file-type

javascript - por - Node.js-Tipo de archivo del sistema de archivos



node js es un framework (6)

Necesito obtener el tipo de archivo de un archivo con la ayuda de node.js para establecer el tipo de contenido. Sé que puedo verificar fácilmente la extensión del archivo, pero también tengo archivos sin extensión que deberían tener el tipo de contenido image/png , text/html aso.

Este es mi código (sé que no tiene mucho sentido, pero esa es la base que necesito):

var http = require("http"), fs = require("fs"); http.createServer(function(req, res) { var data = ""; try { /* * Do not use this code! * It''s not async and it has a security issue. * The code style is also bad. */ data = fs.readFileSync("/home/path/to/folder" + req.url); var type = "???"; // how to get the file type?? res.writeHead(200, {"Content-Type": type}); } catch(e) { data = "404 Not Found"; res.writeHead(404, {"Content-Type": "text/plain"}); } res.write(data); res.end(); }).listen(7000);

No he encontrado una función para eso en la API así que me encantaría que alguien me dijera cómo hacerlo.


Debería echar un vistazo al file herramientas de línea de comandos (Linux). Intenta adivinar el tipo de archivo basándose en los primeros dos bytes del archivo. Puede usar child_process.spawn para ejecutarlo desde dentro del nodo.


Desea buscar el tipo mime y, afortunadamente, node tiene una biblioteca útil solo para eso:

https://github.com/bentomas/node-mime#readme

editar:

Probablemente deberías buscar en un servidor de activos estático y no configurar nada de esto por ti mismo. Puede usar express para hacer esto realmente fácilmente, o hay una gran cantidad de módulos de archivos estáticos, por ejemplo, ecstatic . Por otro lado, probablemente deberías usar nginx para servir archivos estáticos de todos modos.


Echa un vistazo al módulo mmmagic . Es un enlace libmagic y parece hacer exactamente lo que quieres.


Hay una biblioteca auxiliar para buscar tipos de mimos https://github.com/broofa/node-mime

var mime = require(''mime''); mime.lookup(''/path/to/file.txt''); // => ''text/plain''

Pero todavía usa la extensión para buscar aunque


La respuesta aceptada parece tener una dependencia de Python y las otras respuestas están obsoletas o suponen que el nombre del archivo tiene algún tipo de extensión.

OPCION 1: Si quieres el mimetype :

Instalar

npm i -S file-type read-chunk

Utilizar

const readChunk = require(''read-chunk''); const fileType = require(''file-type''); const buffer = readChunk.sync(filePath, 0, fileType.minimumBytes); console.log(fileType(buffer));

OPCIÓN 2: Si solo necesitas la posible extensión de archivo :

Instalar

npm i -S image-size

Utilizar

const sizeOf = require(''image-size''); console.log(sizeOf(filePath).type);


Utilicé esto:

npm install mime-types

Y, dentro del código:

var mime = require(''mime-types''); tmpImg.contentType = mime.lookup(fileImageTmp);

Donde fileImageTmp es la copia de la imagen almacenada en el sistema de archivos (en este caso, tmp).

El resultado que puedo ver es: image / jpeg