Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6085
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Когда файл-это просто файл?
Итак, вы пишете веб-приложение, и у вас есть несколько областей сайта, где пользователь может загружать файлы. Мой основной метод работы для этого-сохранить фактический файл на сервере и иметь таблицу базы данных, которая соединяет сохраненное имя файла с записью, к которой оно относится.
Мой вопрос заключается в следующем: должна ли быть другая таблица для каждого "type" файла? Кроме того, следует ли хранить файлы в контекстно-зависимых местах на сервере или все вместе?
Несколько примеров: фотографии профиля пользователя, работа приложений CVs, документов на страницах CMS и т. д.
В вашем примере есть аргумент для двух таблиц, поскольку у вас есть файлы, которые могут быть связаны с двумя разными вещами.
- CVs, фотографии связаны с пользователем.
- вложения связаны со страницей CMS.
Если вы помещаете их в одну таблицу (и вы хотите разрешить пользователям иметь более одной фотографии или резюме), вам нужно две таблицы ссылок для связывания файлов->пользователи и файлы->cms_pages. Возможно, это подразумевает отношение HABTM, которое не является правильным и допускает несогласованные данные.
Подход с двумя таблицами немного чище и позволяет связывать файлы только с правильным типом сущности с простой связью belongsTo.
Но я не думаю, что есть какой-либо "right" ответ на этот вопрос, если вам не нужно хранить разные типы метаданных для разных типов файлов.
Также не забудьте сохранить или вычислить тип mimetype для каждого файла, чтобы он мог быть правильно передан обратно в браузер с правильными заголовками HTTP.
Из того, что вы сказали, я бы просто хранил файлы со случайными (UUID или что-то еще) именами файлов в одном месте. Тогда у меня будет таблица 'attachments' или что-то, что содержит ссылки на все ваши внешние файлы. Эта таблица также будет содержать метаданные для этого файла, поэтому какой тип файла это (изображение, CV и т. д.) И так далее.
Там могут быть жесткие ограничения на количество файлов в одном каталоге, хотя, в зависимости от того, что FS вы используете.
Для хранения разных файлов в разных местах могут быть разные причины.
Во-первых, ограничение на количество файлов в одном каталоге может быть рассмотрено.
Во-вторых, безопасность может быть проблемой - если некоторые из них должны быть общедоступными (например, фотографии профиля), но другие нет (например, CVs), то размещение их в разных каталогах будет проще управлять.
В-третьих, простые задачи администрирования могут быть проще, если файлы разделены, например просмотр в файле explorer, управление резервными копиями или изменение приложения для разделения хранилища файлов по нескольким местоположениям.
Существует также проблема конфликтов имен файлов, но если вы переименуете все, чтобы соответствовать полю идентификатора базы данных (например), то это не будет проблемой.
Но в конце концов это, вероятно, зависит от объемов и ваших собственных предпочтений.
Отдельная таблица для каждого типа файла становится актуальной только в том случае, если вы храните другие метаданные (и, следовательно, дополнительные столбцы) для каждого типа файла. Если ваши таблицы для каждого типа файлов содержат только одни и те же столбцы (например, filename, filetype, dateuploaded и т. д.), Тогда имеет смысл иметь их все в одной таблице.