下载的.zip格式的pdf文件已损坏

本文关键字:文件 已损坏 pdf 格式 zip 下载 | 更新日期: 2023-09-27 18:02:30

我为供应商创建了一个HTML5在线门户网站,在那里他们可以上传和下载他们想要的任何文件。不幸的是,我不能给你看截图。但问题是:如果上传了2个或更多的文件,那么程序应该创建一个包含所有pdf文件的。zip文件。它被正确创建,文件都在里面,但是它们是损坏的,意味着我不能打开它们。除此之外,他们的文件大小为1kb。

String zipFile = String.Format(@"{0}.zip", Guid.NewGuid());
String zipPath = String.Format(@"{0}'{1}", Data.Properties.Settings.Default.DownloadPath, zipFile);

using (FileStream zipToOpen = new FileStream(zipPath, FileMode.CreateNew))
{
    using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create))
    {
        using (SqlConnection con = new SqlConnection(Data.Properties.Settings.Default.SelectionTMPDatabase))
        {
            con.Open();
            using (SqlCommand cmd = new SqlCommand(String.Format("SELECT [FileName], [File] FROM {0} WHERE [DownloadId] = @downloadId", Data.Properties.Settings.Default.SelectionFileDatabaseTable), con))
            {
                cmd.Parameters.AddWithValue("@downloadId", downloadID);
                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        if (dr["FileName"] != null && dr["FileName"] != DBNull.Value && fileNames.Contains(dr["FileName"].ToString()))
                        {
                            ZipArchiveEntry entry = archive.CreateEntry(dr["FileName"].ToString());
                            using (StreamWriter writer = new StreamWriter(entry.Open()))
                            {
                                writer.Write((byte[])dr["File"]);
                            }

这是创建.zip文件的部分。我希望你能帮助我!如果你有任何问题就问吧!

下载的.zip格式的pdf文件已损坏

您正在创建一个空的zip条目,然后用列"File"的内容写入它—这真的是您打算做的吗?

如果你得到dr["FileName"]的完整路径然后简单地执行

archive.CreateEntryFromFile(dr["fileName"], fullPathToFile);