ファイルフォームのアップロードに問題があります。すべてのブラウザーで機能しないコードの簡単な例をここに書きます。
HTML部分は次のようなものです:
<form method="POST" enctype="multipart/form-data" action="match.php">
<input class="btn btn-info" name="dataset" type="file" id="dataset" />
<input class="btn btn-info" type="submit" name="submit" value="Submit" />
</form>
次に、match.php ファイルで、たとえば次のようにファイルを取得して処理します。
if ($_FILES["dataset"]["error"] > 0 || !($_FILES["dataset"]["size"] > 0)) {
$dataset = "default.txt";
echo 'error:' . $_FILES["dataset"]["error"] . ' - filesize:' . $_FILES["dataset"]["size"];
} else {
$dataset = $_FILES["dataset"]["tmp_name"];
echo "Ok";
print_r($_FILES);
}
非常に簡単です。アップロード プロセス中にエラーが発生した場合は、デフォルト ファイルを使用します (そしてエラー情報を出力します)。それ以外の場合は、すべて問題ありません。
まあ、これは一部のブラウザを除いて完全に機能します。たとえば、Android の既定のブラウザー(Chrome ではなく) で問題が発生しましたが、Windows システムの一部のブラウザーでも同様のようです (正直に言うと、自分で試したことはありません)。
私が印刷したエラー情報を使用すると、エラーはないように見えますが$_FILES["dataset"]["error"]
(出力は 0)、ファイルサイズは0です(これらのブラウザーのみ)。
フォルダのアクセス許可に問題はありません (「default.txt」ファイル情報を使用してフォルダにファイルを書き込みます)、php.iniの設定に問題はありません (実際には 65kb の同じ txt ファイルでテストしました)。