データからJSONファイルを生成するスクリプトがあります。 ディレクトリからファイルを読み込んで、JSONファイルのみを取り出してDBに挿入する2番目のスクリプトがあります。PHPで生成されたJSONファイルにはアプリケーション/オクテットストリームのMIMEタイプがあります
問題は、2番目のスクリプトがために(私はそれはかなりのものにすることができるようapplication/octet-stream
MIMEタイプを許可したくない私の生成されたファイルの代わりに、application/json
から「アプリケーション/オクテットストリーム」MIMEタイプを検出したということですセキュリティ上の理由:その2番目のスクリプトは、ディレクトリ内にすべてのjson
ファイルをロードします(生成されたものだけでなく)。
ファイルのMIMEタイプを「設定」する必要はありますか?
ファイル生成コード:JSONファイルの読み取り
if($r_handle = fopen($s_file_name, 'w+')){
fwrite($r_handle, json_encode($o_datas, JSON_HEX_QUOT | JSON_HEX_TAG));
fclose($r_handle);
return;
}
コード:
$o_finfo = finfo_open(FILEINFO_MIME_TYPE);
$a_mimes =& get_mimes();
if(is_dir($s_dir) && $r_handle = opendir($s_dir)){
while($s_file = readdir($r_handle)){
$s_file_path = $s_dir.$s_file;
$s_mime = finfo_file($o_finfo, $s_file_path);
if(!in_array($s_file, array('.', '..')) && in_array($s_mime, $a_mimes['json'])){
// Some code
}
}
}
いいえ、MIMEタイプを「設定」できません。 Finfoは可能な限り最高の推測*です。 "application/octet-stream"とはかなり "ダンノー、それは私が推測するファイル"を意味します。技術的な正解です... – deceze
質問を理解していれば、PHPのファイルの 'header()'と 'fopen()'にcontent-typeを設定できますか? –
@SteveKnau: 'header()'、 'fopen()'、 'fwrite()'、 'fclose()'を実行できますか? – VeZoul