我读过的每本书和文章都建议我们出于安全目的重命名上传文件。假设我有这样的代码:
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中添加一些额外的列来保存扩展,然后可能会在会话中调用图像文件,我不知道。任何人都可以给我一些解决方案或示例代码,可以帮助我,因为我阅读的大部分教程只解释有关上传和重命名文件名而不是文件扩展名既不显示上传文件。感谢。
答案 0 :(得分:0)
尝试使用此代码
$temp = explode(".",$_FILES["file"]["name"]);
$newfilename = rand(1,99999) . '.' .end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename;