簡體   English   中英

確定上傳的 YML 和 XML 文件的 MIME 類型

[英]Determining MIME type of uploaded YML and XML files

我正在嘗試解析通過 laravel nova 應用程序上傳的文件。 我只希望 YML 或 XML 文件通過並被解析。

但是為了能夠區分上傳的文件,我想檢查 MIME 類型,以便為 XML 或 YML 調用正確的解析器。

但是,在 XML 的情況下,將鼠標懸停在上載文件(交響樂)上時,它告訴我它是“文本/xml”mimetype。 對於 YML,它是一種“應用程序/八位字節流”MIME 類型。

當通過->getMimeType();

$mimeType = $file->getMimeType();
$finfo = new \finfo(FILEINFO_MIME_TYPE);
$test = $finfo->file($path);

$mimeType$test都返回“text/plain”。

是否有另一種方法可以確定 XML/YML 文件的 MIME 類型? 我期望 MIME 類型類似於“text/xml”、“application/xml”、“text/YML”或“application/yml”

您的主要問題是 YAML 沒有 MIME 類型 即使是這樣,MIME 類型檢測通常也是使用所謂的幻數來完成的。 由於 YAML 不需要任何類型的標識符,因此很難使用這種檢測,並且您可能會得到不可靠的結果。

使用finfo class您應該能夠確定文件是否為 XML。 因此,最好的辦法是使用finfo::file()檢查文件,如果它以文本/純文本形式返回,請嘗試使用 Yaml 解析器並查看它是否有效。

$finfo = new \finfo(FILEINFO_MIME_TYPE);
$test = $finfo->file($path);
if ($test === "text/xml") {
    // parse as XML
} else {
    // parse as YAML
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM