2011-01-14 6 views
1

Я создаю опрос, в котором пользователи могут загружать около 6 изображений. Что было бы лучшим способом сохранить их в файловой системе? Пользователи могут делать несколько опросов (таким образом отслеживая их улучшение с течением времени) ... поэтому я не могу просто назвать их последовательно ...Загрузить соглашение об именах

Это приложение CI/PHP. :)

Или ради знания, как бы вы это сделали?

+2

Почему не последовательно? 'Survey1_image6.jpg'? –

+0

Итак, вам нужно отслеживать, пользователь, опрос и изображение (и)? –

+0

@Phill, мне просто нужен простой способ отслеживания изображений и пользователей, но я не могу просто назвать их чем-то вроде 'user12_image3' ... –

ответ

0

Рассмотрим последовательную нумерацию:

user123_survey1_image6.jpg 

Идентификатор пользователя является 123, и это является шестым изображение пользователя, или еще проще:

user123_survey56_image899.jpg 

где пользователь 123 «s шестое изображение имеет идентификатор 899.

+0

Это пчела плохо организована, должна быть какая-то структура в отношении каталога ИМО. – RobertPitt

1

Ничего себе, это своего рода открытое ... Я думаю, что, вероятно, я бы структурировал каталог для каждого пользователя, а затем назвал изображения на основе даты и времени, в которые они были загружены. Таким образом, это выглядело бы примерно так:

/+ 
| 
+--+ Kyle 
    | 
    +-- 20110113114903.png 
    | 
    +-- 20110113115122.png 
    | 
    +-- 20110114010304.png 
+--+ Kevin 
    | 
    +-- 20101114123456.png 
    | 
    +-- 20110102023648.png 
    | 
    +-- ... 

Однако это может быть не так масштабируемо, как вам нравится. Возможно, вы захотите сделать каталоги глубже, поэтому каждый человек получает каталог за дату, с изображениями внутри.

+0

Неплохо ... Я могу выкопать идею штампа даты. –

1

Отображение всего этого в базе данных, где у вас есть они хранятся в файловой системе, будет лучшим результатом для поисковых опросов и пользователей.

// Pseudo Database 
// user table 
user_id (pk) 
user_name 
user_filesystem_dir 
... 

// survey table 
survey_id (pk) 
survey_name 
survey_filesystem_dir 
... 

// Image table 
image_id (pk) 
image_name 
image_filesystem_dir 
user_id_fk (this is the user_id from the user table) 
survey_id_fk (this is the survey_id from the survey table) 
... 

// Find all the images for user id 123 and survey 456 
SELECT * FROM image_table AS it, user_table AS ut, survey_table AS st 
JOIN (it.user_id_fk = ut.user_id AND it.survey_id_fk = st.survey_id) 
WHERE user_id_fk = 123 
AND survey_id_fk = 456 

// Pseudo Code 
$user_id  = 123; 
$survey_id = 456; 
$survey_name = 'Stack Survey #1'; 

$image_array = array(
    'image1.png', 
    'image2.png', 
    'image3.png', 
    'image4.png', 
    'image5.png', 
    'image6.png' 
); 

// Folder Structure where User is most searched 
+-+123 <user_id> 
    | 
    +-467 <survey_id> 
    | | 
    | +-images 
    | | 
    | +-image1.jpg 
    | +-image2.jpg 
    | +-image3.jpg 
    +-456 <survey_id> 
    | 
    +-images 
     | 
     +-image1.png 
     +-image2.png 
     +-image3.png 
     +-image4.png 
     +-image5.png 
     +-image6.png 

// Folder Structure where Survey is most searched 
+-+467 <survey_id> 
| | 
| +-123 <user_id> 
| | 
| +-images 
|  | 
|  +-image1.jpg 
|  +-image2.jpg 
|  +-image3.jpg 
+-456 <survey_id> 
    | 
    +-123 <user_id> 
     | 
     +-images 
     | 
     +-image1.png 
     +-image2.png 
     +-image3.png 
     +-image4.png 
     +-image5.png 
     +-image6.png 
0

Если отслеживать индивидуальных пользователей, как это было предложено «таким образом, отслеживать их улучшение в течение долгого времени» Я хотел бы начать с этим быть каталог верхнего уровня. Однако даже это может привести к раздуванию каталога по мере увеличения количества пользователей.

В одном приложении я написал, где мне нужно было создать файл для каждого пользователя в системе, я написал процедуру (была фактически частью базы данных), которая сломала их уникальный идентификатор в структурированный набор папок.

Например: пользователь 12345 загрузки # 5 могут быть сохранены в upload_dir/1/2/3/4/5/upload_5.png

Если вы хотите что-то чуть меньше "угадываемы" еще можно было использовать что-то как выше, но вместо того, чтобы просто использовать свой идентификатор, вы можете использовать его, но следовать аналогичной схеме.

0

Одним из вариантов было бы случайное имя ваших файлов с помощью uniqid(). Вы должны проверить, чтобы убедиться, что этот uniqid еще не существует. Что-то вроде этого.

do { 
    $filename = uniqid().'.jpg'; 
} while (!file_exists('images/'.$filename)); 
+0

Предполагается, что вы сохраняете имена файлов в базе данных. – dqhendricks

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

  • Нет связанных вопросов^_^