2015-02-02 6 views
-1

У меня есть несколько отдельных полей в моей базе данных, в которых хранится имя файла & путь к различным типам файлов (коды, руководства, изображения, видео) - например. ImageName, ImagePath, VideoName, VideoPath и т. Д.Загрузка нескольких файлов с использованием Gridview

Я решил связать имена файлов в одном столбце. Вот как я показываю их в своей сетке.

enter image description here

Когда я нажимаю ссылку для загрузки, есть исключение. Исключение типа 'System.IO.DirectoryNotFoundException' произошло в mscorlib.dll, но не было обработано в коде пользователя. Дополнительная информация: Не удалось найти часть пути

Это являются мои коды, когда пользователь нажимает на ссылку Скачать:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "download") 
     { 
      int index = Convert.ToInt32(e.CommandArgument); 
      GridViewRow row = GridView1.Rows[index]; 
      string fName = row.Cells[1].Text; 

      Response.ContentType = "application/octet-stream";    

      Response.AddHeader("Content-Disposition", "attachment;filename=" + fName); 
      //Retrieve the file 
      Response.TransmitFile(Server.MapPath("SFiles/Submissions/" + Session["userid"] 
      + "/" + fName)); 
      Response.End(); 
     } 
} 

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

ответ

0

Fname в вашем случае будет равна "mycodes.zip instalationguide.zip и т.д."

и поэтому следующий COMAND потерпит неудачу

Response.AddHeader ("Content-Disposition", «привязанность; имя файла = "+ fName);

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

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

+1

Да, там есть риск для безопасности. Вы хотите передать идентификатор записи, а затем посмотреть на файлы для отправки. –

0

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

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

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

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