2017-07-27 12 views
2

私は3-4 pdfファイルがあるフォルダを持っています。ボタンをクリックすると、ZIPファイルとしてPDFファイルをダウンロードします。そのために私はasp.netを使用してZipファイルがダウンロードされていません

string strFilePath = HttpContext.Current.Server.MapPath("~/UploadedFiles/" + SAP_ID + '_' + CANDIDATEID + "\\" + SAP_ID + '_' + CANDIDATEID + ".pdf"); 
string strDirectory = HttpContext.Current.Server.MapPath("~/UploadedFiles/" + SAP_ID + '_' + CANDIDATEID); 

HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); 

if (Directory.Exists(strDirectory)) 
{ 
    if (File.Exists(strFilePath + ".zip")) 
    { 
     var filestream = new System.IO.FileStream(strFilePath + ".zip", System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite); 
     filestream.Close(); 
     File.Delete(strFilePath + ".zip"); 
    }     
} 

// ZipFile.CreateFromDirectory(strDirectory, strDirectory + ".zip"); 

var stream = new FileStream(strDirectory + ".zip", FileMode.Open); 

result.Content = new StreamContent(stream); 
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
result.Content.Headers.ContentDisposition.FileName = Path.GetFileName(strDirectory + ".zip"); 
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
result.Content.Headers.ContentLength = stream.Length; 

を以下のコードを記述している。しかし、ボタンの上にZIPをダウンロードし、ブラウザだけでロードになっていませんクリックしてください。

原因が分かっていれば教えてください。

+0

あなたはzipファイルをサーバー上に作成されたかどうかを確認することができますか? – minhhn2910

+0

@ minhhn2910:確認しましょう! – BNN

+0

@ minhhn2910:いいえ、私のコードをデバッグしたところ、{{"ファイルが見つかりませんでした" D:¥¥UserName¥¥VSATFINAL_353¥¥VSATTSSRSurvey¥¥UploadedFiles¥¥I-BR-RNCH-ENB-0243_C3 .zip '。行 'var stream = new FileStream(strDirectory +" .zip "、FileMode.Open);' – BNN

答えて

1

あなたはResponse.TransmitFileメソッドでより多くの運を持っていることが、ここにあなたのzipファイルのアドレスを使用した例である -

Response.ContentType = "application/octet-stream"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=file.zip"); 
Response.TransmitFile(strFilePath + ".zip"); 
Response.Flush(); 
+0

私はそれを得ることができるかどうかを試してみてください – BNN

+0

はこのエラーを受け取りました 'プロセスはファイル 'D:\ UserName \ VSATFINAL_353 \ VSATTSSRSurvey \ UploadedFiles \ I- CLSG-ENB-0001_C3.zip '別のプロセスで使用されているためです.'' HttpContext.Current.Response.TransmitFile(strDirectory + ".zip"); ' – BNN

+0

閉じられていないファイルストリームがありますか?私はあなたが現在冗長ないくつかの行を持っていることに気づいています - var stream = new FileStream(strDirectory + ".zip"、FileMode.Open); result.Content =新しいStreamContent(ストリーム); –

0

zipファイルが作成されていない場合は、UploadedFilesディレクトリの書き込み/変更のアクセス許可をIIS AppPool \ yourAppPoolNameに付与する必要があります。

+0

Zipファイルが作成されていますが、ダウンロードされていません – BNN

関連する問題