問題タブ [dotnetzip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 大きなzipファイルを送信しようとすると接続が閉じられます
私が達成しようとしているのは、ユーザーがSilverlightアプリケーションから複数のファイルをダウンロードできるようにすることです。これを行うために、データベースからすべてのファイルを取得してクライアントに送信するDotNetZip
ライブラリとASP.NET
ハンドラーを使用することにしました。それは良い考えであり、実装が簡単なようでした。単純なハンドラーを作成し、必要なすべてのコードを記述して、すべてが機能しました。
しかし、どういうわけか、たくさんのファイルでzipファイルを作成すると問題が発生します。The remote host closed the connection. The error code is 0x800704CD.
にデータを書き込もうとすると、例外がスローされResponse
ます。
ご覧のとおり、同様の問題の解決策として示されているように、MemoryStream
小さなデータを作成してに送信していますが、これは役に立ちませんでした。ファイルをに直接Response
保存すると、まったく同じエラーが発生します。Zip
Response
BufferOutput
プロパティはFalse
、すぐにダウンロードを開始するように設定されていますが、に変更してTrue
も何も変更されません。
zip
私が送信しようとしているファイルは約248メガバイトであり、これによりエラーが発生します。いくつかの要素を削除し、zip
ファイルが約220メガバイトになると、すべてが正常に機能しているように見えます。
誰かが知っていますか、この動作の理由は何でしょうか?どうすればこれを修正できますか?zipファイルを送信してもこのエラーは発生しませんか?
c# - IonicZip/DotNetZip 閉じたファイルにアクセスできません。context.Response.OutputStream
私は*.ashx
このコードを持つ(ハンドラー)を持っています:
http://dotnetzip.codeplex.com/の最新バージョンを使用して
いFile.ReadAllBytes
ます。例外メッセージは、閉じたファイルにアクセスできませんStreamReader
OutputStream
c# - DotNetZip 1.9 を使用して HttpInputStream から zip ファイルを読み取れない
DotNetZip 1.9 を使用して、Asp.Net MVC 3 でアップロードされた zip ファイルを読み取ろうとしています。受け取った HttpPostedFileBase オブジェクトが問題ないことは既に確認済みです。ディスクに保存してから解凍できます。ただし、メモリから直接解凍できるはずなので、最初にディスクに保存するのは無駄に思えました。
MSDN から、HttpPostedFileBase.InputStream プロパティは「アップロードされたファイルを指す Stream オブジェクトを取得して、ファイルの内容を読み取る準備をします」。
DetNetZip のリファレンスによると、ZipFile.Read() は Stream オブジェクトを受け入れることができます。だから私はそれを試してみました.DotNetZipはBadReadExceptionをスローします. 問題を示すスクリーンショットを添付しました。
HttpInputStream からの解凍の問題
InputStream の値、長さはアップロードされた zip ファイルの値と一致します
誰か助けて?どうも
c# - DotNetZip ストリーミング
一連のファイルを圧縮し、ストリームを介してデータを消費できるようにしようとしています。
メモリフットプリントをできるだけ小さく保ちたいです。
私の考えは、一連の FileStream オブジェクトをデータ メンバーとして持つ Stream を実装することでした。Stream の Read メソッドが呼び出されると、ファイル ストリームの 1 つからデータを読み取り、ZipOutputStream インスタンスを使用して圧縮データを一時ストレージ ストリームに書き込み、それから読み取り要求を転送します。
この一時ストレージ ストリームは、単なるバイトのキューになります。これらのバイトは (Read の呼び出しを介して) バッファーに移動されると、キューから削除されます。このようにして、まだ読み取られていないバイトのみを保存します。
残念ながら、有効な zip ファイルを作成するには、ZipOutputStream を破棄するときにランダムなファイルの場所に書き込む必要があるようです。これにより、「一時的なデータ」ソリューションを使用できなくなります。
うまくいけば、これはすべて明確です:)
zip ファイルを作成するときにメモリ フットプリントを最小限に抑える別の方法はありますか? 助けてください!
ありがとう!
c# - DotNetZipを使用してZipファイルを作成する際のエラー:アーカイブの予期しない終了
DotNetZipを使用して1つ以上のファイルを圧縮する方法がありますが、正しく機能しています。本日初めてエラーが発生しましたが、アーカイブの合計サイズに関係しているようです。同じ60mb.tiffイメージを使用して、コピーをいくつか追加し、テストして、繰り返します。約10枚の画像が追加されるまでは正常に機能しましたが、WinRarを使用してZipファイルを開くと、「予期しないアーカイブの終了」エラーが発生しました。この方法でテストすることで、コードまたはファイルに関連する問題(破損など)を除外できたと思います。コードはエラーではなく、WinRarのみがエラーになります。Zipファイルを開くと、サイズが「0」のファイルが1つだけ表示されます。そのため、ある種のサイズ制限に達しているようで、アーカイブを作成できません。どちらの限界かわかりません。
dotnetzip - ストリームをエントリに取得するときの .NET ZipPackage と DotNetZip
私はしばらくの間 .NET で ZipPackage クラスを使用しており、そのシンプルで直感的な API がとても気に入っています。エントリから読み取るときは、entry.GetStream() を実行し、このストリームから読み取ります。エントリの書き込み/更新時に、entry.GetStream(FileAccess.ReadWrite) を実行して、このストリームに書き込みます。ストリームが元々どこから来たのかわからない他のコードに読み取り/書き込みを渡すことができるため、非常にシンプルで便利です。
ZipPackage-API には LastModified などのエントリ プロパティのサポートが含まれていないため、DotNetZip などの他の zip-api を調べています。ただ、使い方が少しわかりずらかったです。たとえば、エントリから読み取りたい場合、最初にエントリ全体を MemoryStream に抽出し、先頭に移動して、このストリームを他のコードに渡す必要があります。エントリに書き込むには、ZipEntry 自体が読み取れるストリームを入力する必要があります。これは私には非常に後ろ向きに思えます。この API を間違った方法で使用していますか?
ZipEntry は、ファイルが保存されているディスクから直接ファイルを配信し、リーダーが読み取るときに抽出することはできませんか? 最初にメモリに完全に抽出する必要がありますか? 私は専門家ではありませんが、私には間違っているようです。
c# - .NET を使用して Zip ファイル内のディレクトリを削除するにはどうすればよいですか?
.zip 内のディレクトリとその中のすべてのファイルを削除するにはどうすればよいですか (DotNetZip を使用することをお勧めします)。
現在、zip 内のすべてのファイルを実行していますが、機能しません。
そうでない場合、どうすればこれを機能させることができますか?
c# - Ionic Zip:byte[]からのZipファイルの作成
Ionic zipを使用すると、既存のファイルをzipオブジェクトに追加して、zipファイルを作成できます。しかし、作成したzipファイルからそれらのbyte []を読み取ってサーバーに送信していることを考えると、サーバーにzipを保存するには、そのbyte[]からzipファイルを再度作成する必要があります。どうすればこれを達成できますか?
私はC#を使用しています。
c# - DotNetZip で抽出しようとしたときのエラー
ダウンロードが完了したときに、ダウンロードしたファイルを解凍するプログラムがありますDotNetZip
。フォルダー システム内の特定のフォルダーに抽出する必要があるため、.txt ファイルから保存パスを取得します。特定の保存フォルダーを持たないファイル用のフォルダーが 1 つあります。
プログラムは正常に動作しますが、次のようなエラー メッセージが表示されることがあります。
パスの一部が見つかりませんでした!
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) bei System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity) bei System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity) bei System.IO.Directory.CreateDirectory(String path) bei Ionic.Zip.ZipEntry.ValidateOutput(String basedir, Stream outstream, String& outFileName) bei Ionic.Zip.ZipEntry.InternalExtract(String baseDir, Stream outstream, String password) bei Ionic.Zip.ZipEntry.Extract(String baseDirectory, ExtractExistingFileAction extractExistingFile) bei dvw002.Form1.backgroundWorker1_DoWork(Object sender, DoWorkEventArgs e)
ファイルの95%が正常に抽出され、パスが存在するため、なぜこれが起こっているのかわかりません...
c# - ZipFileオブジェクトの重複キー追加エラー
私は最初にそれをチェックする方法を理解しようとしています
コレクションにある各ファイルをループしてZipFileコレクションに追加しようとすると、次のようになります。
ZipFileタイプはIonic.Zip.dll
問題は、AddItem
エラーが発生し、同じキーのアイテムがすでに追加されていることです。したがって、たとえば、最後に、このzipディクショナリですでに追加されているこのキーを追加しようとします。
"C:\ www \ files \ 233272 \ Exercise Files \ SampleCode \ Original \ MyTest.cs"
dupが正しく機能するかどうかを確認できません...ループ内でこれを2回追加しようとします。
追加する前にfile[0]を確認するにはどうすればよいですか?私は試しLINQ .Any()
ましたが、これにLINQを使用することさえできれば、構文を正しく理解できませんでした。
私はこれを試しましたが、構文的にこれを正しく行っていません:
また試した
また試した