2017-02-01 2 views
0

Я хочу сохранить информацию о файле после того, как файл будет загружен на наш сервер с помощью C#. В основном у нас есть два места хранения, то есть. локальное хранилище и облачное хранилище.Как сохранить информацию о файле в базе данных после загрузки?

Структура БД

ID  int 
CreateOn smalldatetime 
FileUrl nvarchar(max) 
StoreTypeID int 

FileUrl хранит URL файла, но не путь и имя файла.

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

Мой вопрос я должен также отслеживать столбцы

Path 
Filename 

Для того, чтобы получить доступ к локальным файлам?

Столбец имени файла можно избежать, извлекая имя файла из файла fileurl.

+0

Почему вы установили 'FileUrl' в' nvarchar (max) '? – SeM

ответ

0
ID  int 
CreateOn smalldatetime 
FileUrl nvarchar(max) 
FilePath nvarchar(300) 
StoreTypeID int 

Просто добавьте путь к вашему дБ.

Имея переменную пути, вы сможете получить доступ к файлу в файловой системе, и вы можете получить имя_файла Path.GetFileName(dbObject.FilePath), если вам нужно.


Но лучший подход был бы таким.

ID  int 
CreateOn smalldatetime 
FileUrl nvarchar(max) 
FileName nvarchar(300) 
StoreTypeID int 

Не храните файлы с именем, которое пользователь предоставил, либо на локальном, либо на облачном хранилище. Но запишите имя файла в db вместе с вашим файлом.

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

+0

Итак, вы соглашаетесь смешивать информацию о файлах как для облачных, так и для локальных? – mko

+0

да, почему бы и нет. Фактически, вы уже сделали это, поставив «StoreTypeID» на свою таблицу. –

+0

Вычисленный путь вызовет многократные обратные вызовы, которые я хочу избежать. Также у меня есть большое количество контейнеров/каталогов ... Как насчет ID междунар CreateOn smalldatetime PhysicalPath NVARCHAR (макс) // включает в себя имя файла FileUrl NVARCHAR (макс) OriginalFileName NVARCHAR (300) StoreTypeID INT – mko

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