私は共有ホスティングを利用しており、fileinfoを機能させるために彼らと戦ってきましたが、ようやく機能するようになりましたが、新しいファイルアップロードツールを作成しているため、基本的にこれを手に入れました。どのmimetypeがアップロードされているかを知る必要がありますが、fileinfoはボールをプレイしたくありません。
したがって、.sqlファイルはtext/plainを正しく返します。
ただし、他のすべてのファイルは単にapplication / octet-streamを返します。私が疑問に思っているのは、これが事実である理由です。ホストを大量の質問で怒らせたくないので、この問題について調査したいと思います。私が彼らをさらに悩ませる前に。
コード:
function get_mime($filename)
{
$result = new finfo(FILEINFO_MIME_TYPE, "/usr/share/file/magic.mime");
return $result->file($filename, FILEINFO_MIME_TYPE);
}
echo $user->get_mime($_FILES['file']['tmp_name'][$i]);
どんな助けでも大歓迎です、どうもありがとう
アップデート
そこで、MIMETYPEチェックのコードを更新し、以下を反映するようにコードを更新しました(関数の場合)。
function get_mime($filename)
{
$result = new finfo(FILEINFO_MIME_TYPE, "/usr/share/file/magic.mime"); // return mime type ala mimetype extension
if (is_resource($result) === true)
{
return $result->file($filename, FILEINFO_MIME_TYPE);
} else {
return "failed";
}
return false;
}
明らかに、ご覧のとおり、出力が失敗したときに失敗しました。これは100%の確率で発生しており、ifステートメントを削除するとapplication / octet-streamが返されますが、これは正しくありません。
アップロードプロセスは次のようになります。ユーザーのアップロード->ファイルはpublicの上の一時フォルダー(upload_check)に移動され、fileinfoによってチェックされます。ファイルが受け入れられない場合は破棄され、そうでない場合はにコピーされます。パブリックファイルを作成し、一時フォルダから破棄します。
私はそのプロセスを作成しましたが、それでもfileinfoは協力したくなく、public_htmlフォルダーの上に保存されたサーバー上にある場合でも、すべてのapplication/octet-streamを返します。
何かアドバイス?
ジェイク