サーバー上で実行され、zipファイルを正しく生成してサーバーに格納するコードセットがあります。私はそのファイルの場所を物理的なパスとして持っています。応答でファイルを送信できません
私が試みたことは、クライアントへの応答を使用してそのファイルをダウンロードすることはできませんでした。
試み1:
System.IO.FileInfo fi = new System.IO.FileInfo(zipFilePath);
//setup HTML Download of provided Zip.
//application/zip
Response.ClearContent();
Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/zip";
Response.AddHeader("Content-Disposition",
"attachment; filename=\"" + System.IO.Path.GetFileName(zipFilePath) + "\";");
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.TransmitFile(zipFilePath);
Response.Flush();
Response.End();
ません結果。コードはエラーなしで実行されますが、クライアントへのダウンロードはありません。
試み2:
//Almost the same as attempt 1, but with WriteFile instead
Response.WriteFile(zipFilePath);
Noの結果、試行と同じ1
試み3:
//Note: Same Header Section as Attempts 1 and 2
System.IO.BinaryReader reader = new System.IO.BinaryReader(new System.IO.FileStream(zipFilePath, System.IO.FileMode.Open));
int CHUNK = 1024;
List<byte> FileArray = new List<byte>();
while (reader.BaseStream.Position < reader.BaseStream.Length)
FileArray.AddRange(reader.ReadBytes(CHUNK));
byte[] bArray = FileArray.ToArray();
reader.Close();
Response.OutputStream.Write(bArray, 0, bArray.Length);
Response.Flush();
Response.End();
Noの結果、以前の試みと同じ
試み4:
//Identical to Attempt 3, but using BinaryWrite
Response.BinaryWrite(bArray);
結果はありません。以前の試みと同じです。
質問
これらのコードブロックのひとつひとつは、エラーなしで実行しますが、ファイルの保存ダイアログが表示されません。私は何も得られない。私は私の人生のために私が逃しているかもしれないものを理解することができません。
- ファイルパスが正しい
- コードがないクライアント上で、サーバー上で実行されていると確認された、私はこのような理由
誰かが何か提案があれば、私はすべて耳にします。このファイルをクライアントにダウンロードさせる方法はわかりません。
を追加することにより、ページのページのロードに固定しました。あなたのコメントのように 'application/zip'にする必要があります。 – itsme86
ブラウザでネットワークトラフィックを調べることを試みましたか?あなたはfiddlerのようなものを使うこともできますし、ブラウザの診断(IEのF12、FirefoxのCTRL + SHIFT + iなど)のNetworkタブを見ることもできます – itsme86
mime/content typeのスペースは問題ありません最初はスペースが必要ありません)。 – Nikkster