ฉันคิดว่าการจับคู่ส่วนหัวของประเภทเนื้อหาในคำขอจะใช้งานได้เช่นกัน สิ่งนี้จะทำงานได้แม้ในกรณีที่คุณอัปโหลดไฟล์ที่ไม่มีนามสกุล (เมื่อชื่อไฟล์ไม่มีส่วนขยายในคำขอ)
สมมติว่าคุณกำลังส่งข้อมูลของคุณโดยใช้ 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--
ที่นี่ชื่อส่วนหัวของประเภทเนื้อหามีประเภท mime ของข้อมูล การแม็พชนิด mime นี้กับส่วนขยายจะทำให้คุณได้รับนามสกุลไฟล์ :)
Restify BodyParser แปลงส่วนหัวนี้เป็นคุณสมบัติที่มีประเภทชื่อ
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 }
}
คุณสามารถใช้ส่วนหัวนี้และทำการแมปส่วนขยาย (สตริงย่อย ฯลฯ ... ) ด้วยตนเอง แต่ยังมีไลบรารีที่ทำสำหรับสิ่งนี้ ด้านล่างทั้งสองเป็นผลลัพธ์อันดับต้น ๆ เมื่อฉันค้นหาด้วยกูเกิ้ล
และการใช้งานก็ง่ายเช่นกัน:
app.post('/upload2', function (req, res) {
console.log(mime.extension(req.files.image.type));
}
ตัวอย่างด้านบนจะพิมพ์pngไปยังคอนโซล