サプライヤ向けのHTML5オンラインポータルを作成しました。そこでは、必要なだけ多くのファイルをアップロードしてダウンロードできます。残念ながら、あなたにスクリーンショットを表示することはできません。しかし、ここに問題があります: 2つ以上のファイルがアップロードされている場合、programmは内部にすべてのPDFを含む.zipファイルを作成する必要があります。それは正しく作成され、ファイルはすべてしかし、が壊れている、私はそれらを開くことができないことを意味します。それに加えて、彼らは1キロバイトのファイルサイズを持っています。.zipでダウンロードしたPDFが壊れています
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が作成される部分です。あなたが私を助けることを願っています!ご質問がありましたらお気軽に!
を行い、私は最初のネストを減らすためにリファクタリングういかが
。データをデータベースから取り出してファイルに書き出します –
'dr [" File "]'のバイト配列にすべてのバイトが含まれていますか? –