Есть несколько действительных подходов, которые могут решить ваш вопрос.
Я покажу самый простой из всех, что я могу придумать.
Ваша форма должна иметь следующие модификации:
Добавьте атрибут ENCTYPE к тегу формы:
<form action="post.php" method="post" enctype="multipart/form-data">
Вставьте поля загрузки файлов (вы можете использовать управляющий массив, например image[]
, но я буду упрощать):
Image 1: <input type="file" name="image1" />
Image 2: <input type="file" name="image2" />
Имейте в виду, что отправка файлов через форму POST подразумевает, что размер загружаемого файла не может превышать 2048 КБ (2 мегабайта).
Подготовьте каталог для приема файлов, у него должны быть установлены надлежащие разрешения, чтобы пользователи могли писать на вашем сервере (если это сервер Linux, вы можете использовать chmod 777). В этом примере моя папка будет называться «user-images».
Затем в post.php вы добавляете это:
<code>
$upload_to = "./user-images/";
move_uploaded_file(
$_FILES["image1"]["tmp_name"],
$upload_to . "/" . $_FILES["image1"]["name"]
);
move_uploaded_file(
$_FILES["image2"]["tmp_name"],
$upload_to . "/" . $_FILES["image2"]["name"]
);
?>
Что касается изменения размеров изображений для создания миниатюр, вы можете использовать библиотеку GD для изменения размера и сохранения файлов или , вы можете делать живые миниатюры (также используя библиотеку GD, но вместо загрузки файла JPEG в IMG тег на дисплее HTML, вы бы загрузить файл PHP, как это:)
<img src="thumbnail.php?src=image1.jpg&w=90&h=50" />
Ссылки на файлы изображений легко генерируются:
$link = $upload_to . "/" . $_FILES["image1"]["name"]
Если вам нужен абсолютный URL, просто добавьте адрес своего домена до $upload_to
.
Это всего лишь один из способов сделать это. Вы также можете добавить двоичное содержимое изображений в базу данных (поскольку мы говорим о миниатюрах, у нас не должно быть проблем, запросы MySQL ограничены длиной 1 МБ, по умолчанию). Это можно сделать с помощью полей BLOB в таблице базы данных и file_get_contents()
(с PHP 5) или fopen()
в двоичном режиме / fread()
/ fclose()
(с PHP 4), чтобы прочитать файлы и выгрузить их в базу данных , Всегда рекомендуется кодировать файлы, чтобы SQL-запрос не был поврежден (обычно это можно сделать с помощью base64_encode()
или base64_decode()
).
Надеюсь, это поможет вам. Удачи в кодировании!