Saya pikir pemetaan header Tipe-Konten dalam permintaan juga akan berfungsi. Ini akan berfungsi bahkan untuk kasus-kasus ketika Anda mengunggah file tanpa ekstensi. (saat nama file tidak memiliki ekstensi dalam permintaan)
Anggap Anda mengirim data Anda menggunakan 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--
Di sini nama Content-Type header berisi tipe pantomim data. Memetakan tipe mime ini ke ekstensi akan membuat Anda mendapatkan ekstensi file :).
Restify BodyParser mengonversi tajuk ini menjadi properti dengan jenis nama
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 }
}
Anda dapat menggunakan header ini dan melakukan pemetaan ekstensi (substring dll ...) secara manual, tetapi ada juga pustaka siap pakai untuk ini. Di bawah dua adalah hasil teratas ketika saya melakukan pencarian google
dan penggunaannya juga sederhana:
app.post('/upload2', function (req, res) {
console.log(mime.extension(req.files.image.type));
}
cuplikan di atas akan mencetak png ke konsol.