Tôi nghĩ rằng ánh xạ tiêu đề Kiểu nội dung trong yêu cầu cũng sẽ hoạt động. Điều này sẽ hoạt động ngay cả đối với các trường hợp khi bạn tải lên một tệp không có phần mở rộng. (khi tên tệp không có phần mở rộng trong yêu cầu)
Giả sử bạn đang gửi dữ liệu của mình bằng 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--
Ở đây tên tiêu đề Kiểu nội dung chứa loại mime của dữ liệu. Ánh xạ loại mime này vào một phần mở rộng sẽ giúp bạn mở rộng tập tin :).
Restify BodyParser chuyển đổi tiêu đề này thành thuộc tính với loại tên
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 }
}
Bạn có thể sử dụng tiêu đề này và thực hiện ánh xạ mở rộng (chuỗi con, v.v.), nhưng cũng có các thư viện đã sẵn sàng cho việc này. Dưới đây là hai kết quả hàng đầu khi tôi thực hiện tìm kiếm google
và cách sử dụng của họ cũng đơn giản:
app.post('/upload2', function (req, res) {
console.log(mime.extension(req.files.image.type));
}
đoạn trên sẽ in png lên console.