2017-07-27 52 views
2

我有一個文件夾中有3-4 pdf文件。 SO按鈕點擊,我想下載PDF文件作爲ZIP文件。爲此,我寫下面的代碼Zip文件沒有越來越下載使用asp.net

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:\\ \\用戶名\\ VSATFINAL_353 \\ VSATTSSRSurvey \\ UPLOADEDFILES I-BR-RNCH-ENB-0243_C3 .zip'.'在行'變種流=新的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:\用戶名\ VSATFINAL_353 \ VSATTSSRSurvey \ UPLOADEDFILES \ I-MH- CLSG-ENB-0001_C3.zip」,因爲它是在線路正由另一個process.''HttpContext.Current.Response.TransmitFile(strDirectory +‘.ZIP’);' – BNN

+0

你有未關閉的任何文件流?我注意到你有幾行現在是多餘的 - var stream = new FileStream(strDirectory +「.zip」,FileMode.Open); result.Content = new StreamContent(stream); –

0

如果zip文件沒有得到創建你可能需要授予寫入/在你UPLOADEDFILES目錄IIS應用程序池\ yourAppPoolName修改權限。

+0

哎,是越來越創建Zip文件,但沒有得到下載 – BNN