Creo que el mapeo del encabezado Content-Type en la solicitud también funcionará.Esto funcionará incluso en los casos en que cargue un archivo sin extensión. (cuando el nombre de archivo no tiene una extensión en la solicitud)
Supongamos que está enviando sus datos a través de HTTP POST:
POST /upload2 HTTP/1.1
Host: localhost:7098
Connection: keep-alive
Content-Length: 1047799
Accept: */*
Origin: http://localhost:63342
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Content-Type: multipart/form-data; boundary=---- WebKitFormBoundaryPDULZN8DYK3VppPp
Referer: http://localhost:63342/Admin/index.html? _ijt=3a6a054pasorvrljf8t8ea0j4h
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,az;q=0.6,tr;q=0.4
Request Payload
------WebKitFormBoundaryPDULZN8DYK3VppPp
Content-Disposition: form-data; name="image"; filename="blob"
Content-Type: image/png
------WebKitFormBoundaryPDULZN8DYK3VppPp--
Aquí nombre de cabecera Content-Type contiene el tipo MIME de los datos. Al asignar este tipo de mímica a una extensión obtendrá la extensión de archivo :).
Restify BodyParser convierte esta cabecera en una propiedad con nombre tipo
File {
domain:
Domain {
domain: null,
_events: { .... },
_eventsCount: 1,
_maxListeners: undefined,
members: [ ... ] },
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
size: 1047621,
path: '/tmp/upload_2a4ac9ef22f7156180d369162ef08cb8',
name: 'blob',
**type: 'image/png'**,
hash: null,
lastModifiedDate: Wed Jul 20 2016 16:12:21 GMT+0300 (EEST),
_writeStream:
WriteStream {
... },
writable: true,
domain:
Domain {
...
},
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
path: '/tmp/upload_2a4ac9ef22f7156180d369162ef08cb8',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
pos: undefined,
bytesWritten: 1047621,
closed: true }
}
Puede utilizar esta cabecera y hacer la asignación de extensión (subcadena etc ...) de forma manual, pero también hay ya hecho bibliotecas para esto. A continuación dos eran los primeros resultados cuando hice una búsqueda en Google
y su uso es simple también:
app.post('/upload2', function (req, res) {
console.log(mime.extension(req.files.image.type));
}
El fragmento de arriba imprimirá png en la consola.
http://stackoverflow.com/questions/10431845/node-js-file-system-get-file-type repeat? –
No es esa la pregunta sobre mime-types, quiero la extensión de archivo – georgesamper
@Jojje así que decídase. El título * y * el cuerpo de su pregunta pide una forma de discernir el archivo * tipo *. Entonces, ¿cuál es exactamente tu problema? Muéstranos un código, cuéntanos qué esperas que haga, y qué está haciendo en su lugar. –