Как загрузить несколько файлов и создать zip-файл из этих файлов в ASP.NET с#
Привет,
Я хочу загрузить несколько файлов из папки приложения и создать zip-файл.
Для этого я использовал контрольный список, чтобы показать список файлов, которые есть в этой папке .Так что можно скачать только выбранные файлы и создать zip-файл для того же самого.
следующий код я уже пробовал..
Что я уже пробовал:
Код в загрузке страницы для создания списка флажков выглядит следующим образом
if (!IsPostBack) { //DirectoryInfo dir = new DirectoryInfo(Server.MapPath(@"D:/PDFFiles/")); DirectoryInfo dir = new DirectoryInfo(@"D:/PDFFiles/"); FileInfo[] files = dir.GetFiles(); foreach (FileInfo file in files) { string fileName = Path.GetFileName(file.ToString()); ListItem item = new ListItem(fileName); cblFiles.Items.Add(item); } Response.Write("<script LANGUAGE='JavaScript' >alert('" + files.Length + " Files found')</script>"); }
код на кнопке загрузки нажмите
protected void Button1_Click(object sender, EventArgs e) { if (cblFiles.SelectedItem == null) { // No options selected! Response.Write("<script LANGUAGE='JavaScript' >alert('You must select one or more files to download.')</script>"); //base.DisplayAlert("You must select one or more files to download."); return; } var downloadFileName = string.Format("YourDownload-{0}.zip", DateTime.Now.ToString("yyyy-MM-dd-HH_mm_ss")); Response.ContentType = "application/zip"; Response.AddHeader("Content-Disposition", "filename=" + downloadFileName); // Zip the contents of the selected files using (ZipFile zip = new ZipFile()) { // Add the password protection, if specified if (!string.IsNullOrEmpty(txtZIPPassword.Text)) { zip.Password = txtZIPPassword.Text; zip.Encryption = EncryptionAlgorithm.WinZipAes128; } var readMeMessage = string.Format("Your ZIP file {0} contains the following files:{1}{1}", downloadFileName, Environment.NewLine); // Add the checked files to the ZIP foreach (ListItem li in cblFiles.Items) if (li.Selected) { // Record the file that was included in readMeMessage readMeMessage += string.Concat("\t* ", li.Text, Environment.NewLine); // Now add the file to the ZIP (use a value of "" as the second parameter to put the files in the "root" folder) zip.AddFile(li.Value, "Your Files"); } // Add the README.txt file to the ZIP zip.AddEntry("README.txt", readMeMessage, Encoding.ASCII); // Send the contents of the ZIP back to the output stream //zip.Save(downloadFileName); zip.Save(Response.OutputStream); Response.Close(); } }
но не работает для меня когда я нажимаю на кнопку dowload нажмите на нее показывает исключение как
Исключение filenotfoundexception в
C:\\Program Files\\Common Files\\Microsoft Shared\\DevServer\\10.0\\BLWRM0032016-17.pdf":null}
Пожалуйста дайте Ми решение
спасибо