0
我想要做的是用戶可以上傳SQLite文件的小型網頁,但是我想避免那些不是SQLite格式的上傳,所以我在執行「move_uploaded_file」之前嘗試驗證它。上面有一個我嘗試過的例子,但它不起作用。如何檢查上傳的文件是否是PHP中的SQLite格式文件?
function isFileOkay($filedir) {
try
{
$db = new PDO("sqlite:".$filedir);
$sql = "PRAGMA schema_version;";
$ret = $db->query($sql);
if(!$ret)
{
$db = NULL;
return -1;
}
$row = $ret->fetchAll(PDO::FETCH_BOTH);
$value = (int) $row[0]['schema_version'];
$db = NULL;
return $value;
}
catch (PDOException $exception) {
echo $exception->getMessage();
return -1;
}
}
...
$test = isFileOkay($_FILES['upload_file']['tmp_name']);
...
如果文件不是SQLite文件或$值,則$ test變量應該爲「-1」。 $ value = 0也表示文件不正常,但大於0的任何值都表示它是有效的SQLite文件。 問題是,當我測試此代碼手動插入$ filedir的路徑時,例如本機中已存在的文件時,輸出是正確的。但是,當我嘗試驗證「$ _FILES ['upload_file'] ['tmp_name']」它不起作用,並且頁面崩潰。
我是網絡編程的新手,特別是在PHP中,所以我認爲可能存在對$ _FILE變量的誤解。
不幸的是,它沒有工作。 $ mime的輸出實際上是「application/octet-stream」,當我嘗試上傳一個SQLite文件時,我猜測這是默認的文件格式的MIME類型。 – Vinicius