0

単一の txt ファイルを含む zip ファイルを解凍しようとしています。しかし、出力が空の文字列であるため、ストリームを間違って処理している必要があります。

content = new StreamReader(ms).ReadToEnd(); // content is ""

DotNetZip オープン ソース パッケージを使用します。ここに何が欠けているのか分かりますか?

Attachment a = (from x in mail.Attachments.OfType<Attachment>()
   where !string.IsNullOrEmpty(x.Body) || x.RawBytes != null
   select x).FirstOrDefault();

AttachmentName = a.Name;
string AttachmentType = a.Name.Substring(a.Name.Length - 3, 3).ToUpper();

switch (AttachmentType)
{
   case "ZIP":
      MemoryStream ms = new MemoryStream();

      using (ZipFile zip = ZipFile.Read(a.RawBytes))
      {
         foreach (ZipEntry e in zip)
            e.Extract(ms);
      }

      content = new StreamReader(ms).ReadToEnd(); // content is ""
      break;
   default:
      content = new StreamReader(new MemoryStream(a.RawBytes)).ReadToEnd();
   break;
4

1 に答える 1

3

過去に同様の問題がいくつかありましたが、プロパティを設定することで解決しました

Position = 0;

ストリームコンテンツを使用する前に。

于 2013-07-08T09:26:47.040 に答える