मुझे लगता है कि अनुरोध में सामग्री-प्रकार के हेडर को मैप करना भी काम करेगा। यह उन मामलों के लिए भी काम करेगा जब आप किसी एक्सटेंशन के साथ फाइल अपलोड करते हैं। (जब फ़ाइलनाम में अनुरोध में एक्सटेंशन नहीं है)
मान लें कि आप 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--
यहां कंटेंट-टाइप हेडर में डेटा का माइम टाइप होता है। इस माइम प्रकार को एक एक्सटेंशन पर मैप करने से आपको फ़ाइल एक्सटेंशन मिल जाएगा :)।
रिस्टोरिफाई बॉडीपार इस हेडर को नाम टाइप वाली प्रॉपर्टी में बदल देता है
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 }
}
आप इस शीर्ष लेख का उपयोग कर सकते हैं और मैन्युअल रूप से विस्तार (मैपिंग आदि ...) कर सकते हैं, लेकिन इसके लिए तैयार पुस्तकालय भी हैं। जब मैंने Google खोज की थी तो नीचे दो शीर्ष परिणाम थे
और उनका उपयोग सरल है:
app.post('/upload2', function (req, res) {
console.log(mime.extension(req.files.image.type));
}
ऊपर स्निपेट कंसोल के लिए png प्रिंट करेगा ।