Несколько ассоциаций загрузки файлов в MVC - PullRequest
0 голосов
/ 08 июля 2010

Я реализовал загрузку файлов (после прочтения отличного сообщения Скотта Хансельмана )

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

Как я могу это сделать? Например, если на вопрос № 3 загружен файл abc.pdf, как я могу связать этот файл с идентификатором № 3?

Есть хорошие идеи, или кто-то делал это раньше?

Ответы [ 2 ]

1 голос
/ 08 июля 2010

У меня был бы массив или вектор в одном из файлов с геттером и сеттером.Таким образом, когда в вопросе № 3 загружен файл abc.pdf, вы можете отправить информацию, которую хотите сохранить, в установщик и сохранить ее в индексе 3. Если вы хотите получить к нему доступ, используйте метод получения для индекса 3.

В зависимости от того, что вы хотите сохранить, вы создаете массив, содержащий то, что вы хотите.Я не использовал Asp.net, но этот сайт говорит вам, как отсортировать массив, который нам не нужен, но также показывает, как создать массив структур.Поэтому, если вы хотите сохранить только имя файла, вам нужен только строковый массив.Но если вам нужно сохранить имя и что-то еще, то создайте массив структур.

Private  Structure FileInfo
    Public Name As String
    Public OtherInfo As String
End Structure

Затем создайте массив с:

Dim FileInfoArray(NumOfPotentialUploadedFiles - 1) As FileInfo

Так как кажется, что каждое из ваших полей ввода загружает по одному файлу, вам просто нужно запомнить номер идентификатора полей итогда вы бы легко «знали, с какими идентификаторами были связаны загруженные файлы», как если бы в поле 1 был загруженный файл, тогда он был бы в массиве в той же позиции.Вы можете создать логическое значение в структуре, для которой задано значение false при первом создании массива.Затем, когда вы загружаете файл с индексом 1, вы меняете логическое значение на true.Таким образом, вы легко узнаете, какие файлы у вас есть, когда вы проходите через массив b / c, только файлы с истинным значением имеют файл.

0 голосов
/ 09 июля 2010

ок, разобрался с простым решением. Я боролся, так как объект Request.Files [x] не имел никакой ссылки на поля, но Request.Files (HttpFileCollectionWrapper) имеет свойство AllKeys, которое содержит массив полей. Мой код сейчас:

   for (int fileIndex = 0; fileIndex < Request.Files.Count; fileIndex++)
   {
          string fieldName = Request.Files.AllKeys[fileIndex];   <---  Here is where you can gleam an key to persist to the database, I have an ID in the fieldName
          string savedFileName = Path.GetFileName(Request.Files[fileIndex].FileName);
          var path = Path.Combine(<your server save path>, savedFileName);
          Request.Files[fileIndex].SaveAs(path);
    }

Достаточно просто!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...