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有一个功能。 –