каждая книга и статья, которую я прочитал, рекомендует переименовать загружаемый файл в целях безопасности. скажем, у меня есть такой код:
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, чтобы сохранить расширение, а затем, возможно, включить его в сеанс, чтобы вызвать файл изображений, я не знаю. Может ли кто-нибудь дать мне какое-нибудь решение или пример кода, который может помочь мне, так как большая часть учебника, который я прочитал, объясняет только загрузку и переименование имени файла, а не расширение файла, не отображает файлы загрузки. Благодарю.
Попробуйте использовать этот код
$temp = explode(".",$_FILES["file"]["name"]);
$newfilename = rand(1,99999) . '.' .end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename;
Других решений пока нет …