2017-07-27 7 views
2

Ich habe einen Ordner, in dem 3-4 pdf Dateien sind. SO auf Knopfdruck, möchte ich PDF-Dateien als ZIP Datei herunterladen. Dafür habe ich den folgenden Code schreibenZip-Datei wird nicht heruntergeladen mit 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; 

Aber auf, um die ZIP klicken wird nicht heruntergeladen zu werden und den Browser nur Lasten.

Bitte helfen Sie mir zu wissen, was die Ursache ist?

+0

können Sie überprüfen, ob die ZIP-Datei auf dem Server erstellt wurde? – minhhn2910

+0

@ minhhn2910: ok lass mich überprüfen.! – BNN

+0

@ minhhn2910: Nein, jetzt, als ich meinen Code debuggte, bekam ich Fehler als '{" Konnte Datei 'D: \\ Benutzername \\ VSATFINAL_353 \\ VSATTSSRSurvey \ Hochgeladene Dateien \\ I-BR-RNCH-ENB-0243_C3 nicht finden .zip'.in Zeile 'var stream = neuer FileStream (strDirectory +" .zip ", FileMode.Open);' – BNN

Antwort

1

Sie können mehr Glück mit der Response.TransmitFile Methode haben, hier ist ein Beispiel der Adresse Ihrer Zip-Datei mit -

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

Lassen Sie mich versuchen und prüfen, ob ich es bekommen kann – BNN

+0

habe diesen Fehler 'Der Prozess kann nicht auf die Datei zugreifen D: \ Benutzername \ VSATFINAL_353 \ VSATTSSRSurvey \ UploadedFiles \ I-MH- CLSG-ENB-0001_C3.zip ', weil es von einem anderen Prozess verwendet wird.' At line 'HttpContext.Current.Response.TransmitFile (strDirectory +" .zip ");' – BNN

+0

Haben Sie Dateien, die nicht geschlossen sind? Ich merke, dass Sie ein paar Zeilen haben, die jetzt redundant sind - var stream = new FileStream (strDirectory + ".zip", FileMode.Open); result.Content = neuer StreamContent (Stream); –

0

Wenn die ZIP-Datei nicht erstellt wird, müssen Sie wahrscheinlich Schreib-/Änderungsberechtigungen für Ihr UploadedFiles-Verzeichnis an IIS AppPool \ yourAppPoolName erteilen.

+0

hey, Zip-Datei wird erstellt, aber nicht heruntergeladen – BNN

Verwandte Themen