1
我讀過的每本書和文章都建議我們爲了安全目的重命名上傳文件。讓說我有一個這樣的代碼:重命名上傳文件並將其顯示出來
if (!isset($error)) {
$file = $_FILES['images'];
$real_pic_name = $_FILES['images']['name'];;
// Create a tmp_name for the file:
$tmp_name = sha1($file['name']) . uniqid('',true);
// Move the file to its proper folder but add _tmp, just in case:
$dest = PDFS_DIR . $tmp_name . '_tmp';
if (move_uploaded_file($file['tmp_name'], $dest)) {
//insert into database with a prepared statement
$stmt = $pdo->prepare('INSERT INTO users (real_pic_name, tmp_name, dateAdded) VALUES (:real_pic_name, :tmp_pic_name, now())');
$stmt->execute(array(
':real_pic_name' => $real_pic_name,
':tmp_pic_name' => $tmp_name
));
// Rename the temporary file:
$original = PDFS_DIR . $tmp_name . '_tmp';
$dest = PDFS_DIR . $tmp_name;
rename($original, $dest);
// Print a message:
echo '<div class="alert alert-success"><h3>The file has been uploaded!</h3></div>';
} else {
trigger_error('The file could not be moved.');
unlink ($file['tmp_name']);
}
}
問題的是我搞不清什麼是顯示圖像文件,因爲我不認爲重命名文件不是好主意,更好的辦法。我想在我的mysql中添加一些額外的列來保存擴展名,然後可能會在會話中調用圖像文件,我不知道。任何人都可以給我一些解決方案或示例代碼,可以幫助我,因爲我讀過的大部分教程只解釋上傳和重命名文件名,而不是文件擴展名不顯示上傳文件。謝謝。
投入會議的文件名insted的,從數據庫獲取它不會改變任何東西。你可以存儲文件的真實名稱,並將文件的內容保存到數據庫,也許這可以幫助 –
是的,我已經保存它,現在我只是混淆如何顯示已更名的文件,並且改變了分機。 – Kyo
如果您只接受來自用戶的圖像,則可以檢查img分辨率。 PHP有一個功能。 –