Рейтинг:
1
SujataJK
- спасибо, Картик, сэр.
В соответствии с пониманием выше ссылка сохранить отдельный pdf-файл на диск.но я хочу одновременно загрузить или создать zip-папку всех pdf-файлов, хранящихся в базе данных
Karthik_Mahalingam
Сначала сохраните все файлы на диск
zip все сохраненные файлы
загрузите zip-файл с помощью respose. write с типом содержимого zip
SujataJK
ладно..
но как это сделать? согласно приведенной выше ссылке..
строка sPathToSaveFileTo = @"C:\SelectedFile.pdf";
// по этому пути я создам выбранные данные PDF-файла open pdf для проверки
это только для выбранного файла, но я хочу выполнить действие загрузки на btnDownloadAll_Click (). то есть загрузить весь файл в одном запросе select.
Karthik_Mahalingam
вы должны сохранить файлы в папке внутри вашего каталога проекта.
SujataJK
Следующий код я использовал для загрузки PDF при загрузке linkButton из GridView click.
то есть путем передачи определенного идентификатора
охраняемых недействительными lnkDownload_Click(объект отправителя, EventArgs в электронной)
{
LinkButton lnkbtn = отправитель как LinkButton;
GridViewRow gvrow = lnkbtn.NamingContainer как GridViewRow;
инт идентификатор файла = конвертировать.ToInt32(gvDetails.DataKeys[gvrow.RowIndex]. Значение.Метод toString());
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings ["MyConnection"].Параметр connectionString))
{
используя (sqlcommand, который команду cmd = новый sqlcommand, который())
{
УМК.CommandText = " select Name, ContentType, Data from ImageTable where id=@Id";
УМК.Параметры.AddWithValue ("@Id", fileid);
УМК.Подключение = кон;
против.Открыть();
SqlDataReader dr = cmd.Метода executereader();
если (dr. Read())
{
Ответ.ContentType = dr ["ContentType"].Метод toString();
Ответ.AddHeader ("Content-Disposition", " attachment;filename=\"" + dr ["Name"] + "\"");
Ответ.BinaryWrite ((byte []) dr ["Data"]);
Ответ.Конец();
byteArray = (byte[])dr ["данные"];
строку результат = система.Текст.Кодирование.Кодировке utf8.Метода getString(объект ByteArray);
list. Add (результат);
}
}
}
Karthik_Mahalingam
сначала сохраните все файлы,а затем попробуйте заархивировать и загрузить..
не делайте все сразу, нить порвется.
SujataJK
Хорошо..
Я попробую
SujataJK
Спасибо Картик сэр,
У меня есть решение .
Следующий код загружает несколько файлов из базы данных и сохраняет их на диске.Это прекрасно работает в моем случае.
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings ["MyConnection"].Параметр connectionString))
{
// Результате значение dialogresult = это.folderBrowserDialog1.Метод showdialog();
против.Открыть();
используя (команда sqlcommand cmd и = новая команда sqlcommand("Select имя, значение contentType, сведения из ImageTable"))
{
УМК.Подключение = кон;
DataTable objTable = новый DataTable();
SqlDataAdapter objAdapter = новый SqlDataAdapter(cmd);
// objAdapter.Свойство Missingschemaaction = Свойство Missingschemaaction.Следующем коде, вы увидите;
SqlCommandBuilder sqlCmdBuilder = новый SqlCommandBuilder(objAdapter);
objAdapter.Заполнить(objTable);
foreach (DataRow objRow in objTable.Строки)
{
byte[] objData = (byte[])objRow ["Data"];
var firstNBytes = objData.Возьмите (4);
Байт[] threeBytes = новый байт[] { objData[0], objData[1], objData[2], objData[3] };
var bytesToCompare = кодирование.Юникод.Метод getbytes("0х25");
bool equal = firstNBytes.SequenceEqual(bytesToCompare);
строку шестнадцатеричных = метода bitconverter.Метод toString(threeBytes);
наговор.Заменить("-", "");
string strFileToSave = "D:\\PDFFiles\\" + Guid.Метод newguid();
если (hex = = " 25-50-44-46")
{
strFileToSave +=". pdf";
}
ещё
{
strFileToSave +=". jpg";
}
FileStream objFileStream = новый FileStream(strFileToSave, FileMode.Создать, FileAccess.Писать);
objFileStream.Write(objData, 0, objData.Длина);
objFileStream.Закрывать();
}
}
}
Karthik_Mahalingam
хорошо, если это сработает, пожалуйста, закройте сообщение.