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

MediaWiki cố gắng phát hiện loại MIME của các tệp bạn tải lên và từ chối tệp nếu phần mở rộng tệp không khớp với loại mime ["Tệp bị hỏng hoặc có phần mở rộng không chính xác"]. Nếu bạn gặp lỗi này đối với các tệp hợp lệ, hãy thử sử dụng lệnh bên ngoài để phát hiện loại MIME [xem bên dưới]

Trước khi gọi phương thức đã định cấu hình để phát hiện MIME, một số kiểm tra được mã hóa cứng sẽ được áp dụng. Sử dụng ghi nhật ký gỡ lỗi để tìm hiểu xem những kiểm tra đó có gây ra kết quả dương tính giả không. [Ví dụ, MediaWiki 1. 15. 3 có thể phát hiện sai. tệp doc từ MS Word 2007 dưới dạng tệp ZIP. ]

Để định cấu hình loại tệp mà MediaWiki sẽ chấp nhận để tải lên, hãy sử dụng $wgFileExtensions

Nếu được cài đặt, MediaWiki sẽ sử dụng mô-đun FileInfo của PHP hoặc mô-đun MimeMagic cũ hơn. Nếu bạn gặp lỗi như không thể khởi tạo mime_magic, tệp ma thuật không khả dụng, mô-đun này không được định cấu hình đúng — hãy tham khảo tài liệu PHP để biết thông tin về cách khắc phục lỗi này hoặc thay vào đó sử dụng lệnh phát hiện mime bên ngoài [xem bên dưới

Ngoài ra, một lệnh bên ngoài có thể được cấu hình để phát hiện loại mime bằng cách đặt tùy chọn

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
6. Cài đặt phổ biến nhất là

$wgMimeDetectorCommand = "file -bi"; # on Linux
$wgMimeDetectorCommand = "file -bI"; # on macOS

Điều này sử dụng tiện ích GNU

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
7 để xác định loại tệp, tiện ích này sẽ hoạt động ngay trong Linux. Lưu ý rằng tiện ích
/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
7 được cung cấp bởi các Unix khác có thể không hỗ trợ tùy chọn
/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
0 và do đó sẽ không hoạt động. Tiện ích GNU
/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
7 cũng có sẵn cho Mac OS-X và cho Windows thông qua Cygwin

Nếu không có mô-đun mime nào được cài đặt và không có lệnh phát hiện mime bên ngoài nào được định cấu hình, MediaWiki sẽ dựa vào mô-đun GD của PHP để phát hiện loại mime. Lưu ý rằng điều này chỉ hoạt động đối với một số loại hình ảnh nổi tiếng [xem [1]], các tệp khác sẽ được chấp nhận mà không cần kiểm tra thêm

Bạn cũng có thể tắt hoàn toàn kiểm tra loại MIME bằng cách đặt

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
2 — tuy nhiên lưu ý rằng điều này rất không an toàn. các tệp tùy ý sau đó có thể được tải lên với phần mở rộng tệp "vô hại", nhưng vẫn có thể được thực thi/diễn giải theo cách có hại trên máy khách hoặc máy chủ web. Chưa giải quyết. điều này liên quan đến $wgCheckFileExtensions như thế nào?

MediaWiki lưu trữ các loại mime mặc định và các loại phương tiện trong MimeMap. php

Để hỗ trợ các loại mime bổ sung cho các nội dung tải lên trên wiki của bạn, bạn có thể sử dụng hook MimeMagicInit kể từ MediaWiki 1. 24

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};

Loại MIME xác định các phần mở rộng tệp được phép cho một loại mime nhất định. Để nhận dạng các tệp

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
3 là
/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
4 cho Markdown

$mime->addExtraTypes[ 'text/plain md' ];

Hãy nhớ thêm tiện ích mở rộng vào $wgFileExtensions để cho phép nó được sử dụng cho các nội dung tải lên mới trên wiki của bạn

Bạn cũng có thể chỉ định nhiều phần mở rộng tệp, ví dụ như sau đây là những gì MediaWiki nội bộ sẽ thực hiện cho JPEG

$mime->addExtraTypes[ 'image/jpeg jpg jpeg jpe' ];

Lưu ý rằng loại MIME của một số định dạng tệp có thể được phát hiện quá rộng - bất kỳ định dạng dựa trên XML nào cũng có thể hiển thị dưới dạng văn bản/xml, mọi định dạng dựa trên ZIP đều có thể hiển thị dưới dạng ứng dụng/zip. Do đó, phần mở rộng tệp cho các định dạng đó phải được liên kết với loại MIME rộng hơn của chúng, chẳng hạn như. g

________số 8

Dữ liệu "thông tin mime" được sử dụng để phân giải bí danh cho các loại MIME và để gán loại phương tiện cho chúng. Nó chứa một dòng cho mỗi loại kịch câm;

Để chỉ định

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
5 theo loại phương tiện "OFFICE"

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
0

Vài ví dụ

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
1

Lưu ý rằng đối với các tệp OGG, loại phương tiện được xác định theo chương trình. ÂM THANH cho vorbis, VIDEO cho theora, MULTIMEDIA nếu không

Loại phương tiện dành riêng cho MediaWiki và xác định loại phương tiện nào được chứa trong tệp, trái ngược với định dạng của tệp. Thông tin này được lưu trữ trong bảng hình ảnh, cùng với loại mime. Nó hiện không được sử dụng nhiều, nhưng có thể được sử dụng trong tương lai để xác định cách trình bày tệp cho người dùng. Các loại sau đây được xác định

UNKNOWNđịnh dạng không xác địnhBITMAPmột số hình ảnh bitmap hoặc nguồn hình ảnh [như psd, v.v.]. Không thể mở rộng quy mô. VẼmột số bản vẽ vector [SVG, WMF, PS,. ] hoặc nguồn hình ảnh [oo-draw, v.v.]. Có thể mở rộng quy mô. ÂM THANHTệp âm thanh đơn giản [ogg, mp3, wav, midi, bất cứ thứ gì]VIDEOTệp video đơn giản [ogg, mpg, v.v; không bao gồm các định dạng ở đây có thể chứa các phần hoặc tập lệnh thực thi ở đây. ]ĐA PHƯƠNG TIỆN Đa phương tiện có thể viết được [flash, định dạng bộ chứa video nâng cao, v.v.] VĂN PHÒNG Tài liệu, Bảng tính Office [các định dạng văn phòng có thể chứa applet, tập lệnh, v.v.]TEXTVăn bản thuần túy [có thể chứa mã chương trình hoặc tập lệnh]EXECUTABLEcó thể thực thi nhị phânARCHIVEtệp lưu trữ [zip, tar, v.v.]

Ngoài tùy chọn

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
6, các cài đặt sau có thể khiến các tệp bị từ chối [ngay cả khi đã đặt
/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
7]

Ngoài ra, MediaWiki từ chối tất cả các tệp trông giống như tập lệnh có thể vô tình được thực thi trên máy chủ web hoặc trình duyệt của người dùng. Đáng chú ý, mọi thứ giống như một trong các định dạng sau sẽ bị từ chối, bất kể loại mime được phát hiện hoặc phần mở rộng tệp. HTML, JavaScript, PHP, shell script. Lưu ý rằng khả năng phát hiện HTML và JavaScript khá rộng và có thể báo cáo kết quả dương tính giả — điều này là do Microsoft Internet Explorer được biết là diễn giải các tệp trông giống như HTML, bất kể phần mở rộng tệp hoặc loại MIME được máy chủ web báo cáo. . Nếu bạn thực sự muốn cho phép các tệp nguy hiểm như vậy, bạn có thể hack chức năng

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
8 trong UploadBase. php để luôn trả về false

Chưa giải quyết. Hiện tại, hãy xem $wgAntivirus và $wgAntivirusSetup

các loại MIME khi tải xuống

Lưu ý rằng loại MIME được sử dụng khi tệp thực tế được cung cấp cho trình duyệt của người dùng không được xác định bởi tính năng phát hiện MIME của MediaWiki. các tệp không được cung cấp qua MediaWiki mà trực tiếp bởi máy chủ web. Do đó, máy chủ web phải được định cấu hình để sử dụng đúng loại MIME cho mỗi phần mở rộng tệp - ví dụ: nếu bạn gặp sự cố khi xem các tệp SVG trong trình duyệt của mình, hãy đảm bảo rằng máy chủ được định cấu hình để phân phối chúng dưới dạng

/**
 * Example for adding extra mime types via LocalSettings.php
 * @param MimeAnalyzer $mime
 */
$wgHooks['MimeMagicInit'][] = static function [ $mime ] {
    $mime->addExtraTypes[ 'text/plain md' ];
    $mime->addExtraInfo[ 'text/example [OFFICE]' ];
};
9. [Đối với Apache, hãy đọc về mod_mime. ]

Làm cách nào để kiểm tra loại tệp MIME bằng JavaScript?

You can retrieve the File information from an element like this [ref]: var control = document. getElementById["your-files"]; control. .. .
Bây giờ chúng tôi có thể kiểm tra các tệp và xem xét các tiêu đề và loại MIME. ✘ Phương pháp nhanh chóng

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

JavaScript để lấy Loại MIME [Loại nội dung] của Tệp . Inside the JavaScript function, first the HTML FileUpload element is referenced. Sau đó, Tệp đã chọn được truy cập từ bộ sưu tập tệp HTML5. Cuối cùng, Loại MIME [Loại nội dung] của Tệp được xác định từ thuộc tính loại.

Loại MIME của tệp là gì?

Loại phương tiện [còn được gọi là Tiện ích mở rộng thư Internet đa năng hoặc loại MIME] cho biết bản chất và định dạng của tài liệu, tệp hoặc loại byte. MIME types are defined and standardized in IETF's RFC 6838.

Làm cách nào để kiểm tra phần mở rộng tệp hình ảnh trong JavaScript?

trả về /[^. ] +$/. exec[filename]; Nên làm.

Chủ Đề