Je pense que le mappage de l'en-tête Content-Type dans la demande fonctionnera également. Cela fonctionnera même dans les cas où vous téléchargez un fichier sans extension. (lorsque le nom de fichier n'a pas d'extension dans la demande)
Supposons que vous envoyez vos données à l'aide 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--
Ici, l'en-tête Content-Type contient le type MIME des données. Le mappage de ce type MIME à une extension vous donnera l'extension de fichier :).
Restify BodyParser convertit cet en-tête en une propriété de type nom
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 }
}
Vous pouvez utiliser cet en-tête et faire le mappage d'extension (sous-chaîne, etc.) manuellement, mais il existe également des bibliothèques prêtes à l'emploi pour cela. Ci-dessous deux étaient les meilleurs résultats quand j'ai fait une recherche google
et leur utilisation est également simple:
app.post('/upload2', function (req, res) {
console.log(mime.extension(req.files.image.type));
}
l'extrait ci-dessus imprimera le png sur la console.