Lấy loại mime của tệp nodejs

Vì vậy, gần đây tôi có một khách hàng muốn kích hoạt Lambda trên bộ chứa S3 của anh ấy để ghi một số tệp vào một thư mục trong bộ chứa của anh ấy. Mọi thứ đang diễn ra tốt đẹp, ngoại trừ loại nội dung của tất cả các tệp được đặt thành application/octet-stream. Vì vậy, anh ấy muốn tôi khắc phục sự cố này sao cho khi chúng tôi đặt đối tượng vào bộ chứa, Kiểu nội dung sẽ được đặt thành một kiểu phù hợp. Tôi nghĩ rằng nó sẽ khó mất một giờ. Tất cả những gì tôi phải làm là tìm kiếm gói nút, cài đặt nó và vấn đề đã được giải quyết. Nhưng không. KHÔNG

giải pháp thoát
  1. mmma thuật.
    Đó là một gói tuyệt vời, sử dụng liên kết ngôn ngữ C phía sau, lấy bộ đệm tệp làm đầu vào và tạo ra rất nhiều siêu dữ liệu về một tệp.

    Hạn chế. Khi được thông qua một SVG/DXF, nó sẽ phân loại chúng thành văn bản/html

  2. kiểu tập tin.
    Nó cũng lấy một bộ đệm tệp làm đầu vào và trả về kiểu MIME.

    Hạn chế. Khi được chuyển SVG/DXF hoặc một số loại tệp khác, nó sẽ trả về ________ 3

  3. kịch câm.
    Nó lấy một bộ đệm tệp và một giá trị mặc định làm đầu vào và nếu loại tệp không được xác định, nó sẽ trả về giá trị mặc định đó.

    Hạn chế. Kết quả tương tự ở đây, nó đã gán giá trị mặc định đó cho SVF/DXF và một số tệp khác

  4. ext2mime.
    Cái này hoạt động tương tự như cái tôi đã tạo. Nó lấy tên tệp và đưa ra các loại MIME của nó.

    Hạn chế. Bộ dữ liệu của các tiện ích mở rộng rất hạn chế và không thể nhận ra tất cả các loại tệp

Hơn 600 tiện ích mở rộng được hỗ trợ

Không có tín dụng cho tôi. Cảm ơn những người tốt tại FreeFormatter. Tôi đã viết một tập lệnh đơn giản trong bảng điều khiển trình duyệt để trích xuất tất cả các tiện ích mở rộng từ trang web của họ

document.write(JSON.stringify(Array.from(document.getElementsByClassName('bordered-table zebra-striped table-sort')[0].children[1].children).reduce((obj, row) => {
    let objs = {...obj};
    row.children[2].childNodes[0].data.split(', ').map(ext => objs = objs[ext] ? objs : ({...objs, [ext]: {'type': row.children[1].childNodes[0].data, 'name': row.children[0].childNodes[0].data}}))
    return objs;
}, {})))

Lấy loại mime của tệp nodejs

Nhấn Enter

Lấy loại mime của tệp nodejs

Xây dựng ý tưởng thành gói NPM

Tôi đã sử dụng mã soạn sẵn tuyệt vời này để xây dựng gói NPM của mình. Nó đã có mẫu cho các trường hợp thử nghiệm và Travis-CI, vì vậy bất cứ khi nào tôi đẩy mã của mình lên github, nó sẽ tự động chạy các trường hợp thử nghiệm và cập nhật trạng thái trên trang chủ repo của tôi. Tuyệt vời phải không?

lẩm bẩm. diskStorage({ tên tệp. (yêu cầu, tệp, cb) => { const ext = mimeType. phần mở rộng (tệp. mimetype) cb(null, `file-${Date. hiện nay()}. ${ext}`) }, đích đến. (req, file, cb) => { cb(null, uploadDir) } })
FS. readFile(fileObj. đường dẫn, (err, fileData) => { s3. putObject({ Xô. CẤU HÌNH. awsConfig. xô, chìa khóa. Tên tệp, Nội dung. tệpDữ liệu, Kiểu nội dung. kịch câm. tra cứu (tên tệp) }, (err, data) => { error ? . giải quyết (dữ liệu);

Bài viết đơn giản này trình bày cách lấy loại tệp mime trong nút. js. nếu bạn muốn xem một ví dụ về cách lấy tệp mime, hãy nhập vào nút. js thì bạn đang ở đúng nơi. Bài viết này sẽ cung cấp cho bạn một ví dụ đơn giản về get file mime type trong nodejs. Bài viết này sẽ cung cấp cho bạn một ví dụ đơn giản về get file mime type trong node js

Trong ví dụ này là lấy loại tệp mime trong nodejs. tôi sẽ nhận được gói loại mime loại mime. Thư viện này được cung cấp bởi dữ liệu mime-db. Nó cung cấp một tiện ích rất đơn giản, nhẹ, an toàn nhưng tốc độ để xử lý các loại MIME và phần mở rộng tệp

Vì vậy, hãy bắt đầu làm theo ví dụ với đầu ra

Bước 1. Cài đặt nút JS

Bước này không bắt buộc;

Psssst. TRẠI BOOTC PHÁT TRIỂN WEB 2023 sẽ bắt đầu chỉ sau vài ngày nữa. Tham gia danh sách chờ, giữ chỗ trong khóa học thuần tập kéo dài 10 tuần của tôi và tìm hiểu các nguyên tắc cơ bản, HTML, CSS, JS, Tailwind, React, Next. jsvà hơn thế nữa. ✨

Tôi đang gửi tệp qua một biểu mẫu và sau khi sử dụng biểu mẫu có multipart/form-data, phía máy chủ, tôi có các đối tượng Tệp trong req.files

Điều này đã cho tôi một số thông tin, như đường dẫn, tên, kích thước, loại, v.v.

{
  logo: File {
    size: 121920,
    path: '/var/folders/tn/h8lfq1sj7c33c0p30qgkd3mw0000gn/T/upload_b9e85b7cf989482a1760d82b77fd555a',
    name: 'Screen Shot 2021-06-07 at 21.40.29.png',
    type: 'image/png',
    hash: null,
    lastModifiedDate: 2021-06-07T22:20:50.150Z,
//...
  }
}

Lưu ý đường dẫn tệp tạm thời không có phần mở rộng

Nếu bạn sử dụng phía máy chủ tên, không có vấn đề gì. Nhưng tôi muốn thay đổi nó và sử dụng các quy ước đặt tên của riêng mình, vì vậy tôi chỉ cần phần mở rộng tệp

Làm cách nào để kiểm tra loại MIME của tệp trong JavaScript?

You can retrieve the File information from an element like this (ref):