2013-09-30 3 views
5

Мы пытаемся создать сайт для обоев, так что это были бы как-то большие файлы (2mb-5mb), поэтому нам нужно будет хранить изображения на диске в базе данных и только пути к базе данных. Поэтому, если вы можете дать некоторые идеи о том, как это сделать (метод, который мы знаем сейчас, создает PHP-скрипт с функцией загрузки и вручную выбирает изображения с загружаемого ПК), если у вас, ребята, не будет других предложений. Учебники будут высоко оценены. Большое спасибо!Как сохранить изображения в файловой системе (в Интернете) и сохранить пути к базе данных?

Это для администраторов, которые добавили изображения не для пользователей. Примечание: у нас не было никакого сценария, так что вы должны получить от вас какие-то идеи о том, что мы можем использовать с этим, если не догадаться, мы просто перейдем к скрипту php.

+1

не Вы пробовали ничего? Googling для учебных пособий? Написание некоторых строк? Попытайтесь создать строительные леса, чтобы мы могли помочь вам найти подходящее решение. –

+0

Вы должны сделать это так же, как вы предложили. Если вы столкнулись с проблемами, вернитесь и попросите о помощи, и затем укажите пример кода. – Sven

+0

так что лучший способ загрузить файлы? –

ответ

4

Ваша форма,

<form action="PHP_FILE_PATH.php" method="post" enctype="multipart/form-data"> 
<input type="file" name="image" /> 
<input type="submit" name="submit" value="Upload" /> 
</form> 

РНР Часть

<?php 
if($_FILES['image']['name']) 
{ 
    $save_path="FOLDER_PATH_TO_SAVE_UPLOADED_IMAGE"; // Folder where you wanna move the file. 
    $myname = strtolower($_FILES['image']['tmp_name']); //You are renaming the file here 
    move_uploaded_file($_FILES['image']['tmp_name'], $save_path.$myname); // Move the uploaded file to the desired folder 
} 

$inser_into_db="INSERT INTO `database`.`table` (`folder_name`, `file_name`) VALUES('$save_path', '$myname'))"; 

?> 
+0

фактически. благодаря! –

+2

И как @Paul сказал здесь в другом ответе, убедитесь, что вы генерируете имя для каждого файла самостоятельно, в какой-то логике, скажем, например, PHP microtime, и используйте его в переменной '$ myname'. Ответ, который я набрал здесь, - это просто простой пример. –

6

Для каждого загружаемого файла сгенерируйте UUID и используйте его для имени файла на диске. Это позволяет избежать конфликтов, дезинфицировать имена файлов и уязвимости прохождения пути.

У вас будет таблица: (id, description, filename) со значениями (1, "Green field", "0D729DCD-5116-4480-81CE-90A0380B557A.png").

Далее вы хотите избежать проблемы с слишком большим количеством файлов в одной папке - вы столкнетесь с ограничением файловой системы для многих FS.

Чтобы обойти эту проблему, создайте каталоги на основе первых нескольких букв имени файла. Для 0D729DCD-5116-4480-81CE-90A0380B557A.png, вы можете сохранить его в /0/D/7/0D729DCD-5116-4480-81CE-90A0380B557A.png.

+0

спасибо большое @Paul, я думаю, что могу использовать имена папок, например, месяц или что-то вместо первой буквы, но отличное предложение. –

Смежные вопросы