2016-04-05 6 views
0

Yani benim mesele şudur, Aşağıdaki kod var: bildiğim kadarıyla bu dosyayı bulma ve sonra edilmelidir söyleyebilirim ŞimdiVB.Net sadece dosya içeriğini almak, dosyayı indirmeye çalışma

<HttpGet> 
    Function downloadExtract(ByVal id As Integer, ByVal formatId As String) 
     Dim path = AppDomain.CurrentDomain.BaseDirectory + "/app_data/extracts/" + id.ToString + ".csv" 

     Dim file = New FileInfo(path) 

     If (file.Exists) Then 
      Response.ClearHeaders() 
      Response.ClearContent() 

      Response.AddHeader("Content-Disposition", String.Format("attachment; filename={0}", file.Name)) 

      Response.AddHeader("Content-Length", file.Length.ToString) 

      Response.ContentType = "application/x-download" 

      Response.TransmitFile(file.FullName) 

      Response.End() 
     Else 
      Return Nothing 
     End If 

    End Function 

varsa, bazı yanıt üstbilgileri ayarlar ve dosyayı ters çevirir.

Şimdi aynı kod, projenin herhangi bir yerinde yukarıdaki kusursuz dosyayı yapar ve söz konusu dosyayı indirmeme izin verir, ancak şu anda kesinlikle hiçbir şey yapmıyormuş gibi görünen bir sorunum var.

Tarayıcılarımdaki dev konsolu kontrol etme Ajax isteğimin bu dönüşü yöneten denetleyiciye 200 ve tamamının iyi olduğunu görebiliyorum, başarılı istek ile burada hiçbir şey yapmadan bir şey arasında görebildiğim tek fark şu ki; Başarılı olan, bana cevap verisini gösteremediğini, oysa orada başını ikiye böldüğünü, bunun cevap verilerinin metin olarak dosya içeriğinin olduğunu ve bunun neden yapıldığına dair hiçbir fikrim olmadığını gösteriyor.

Günün en iyi kısmı için saçlarımı yırttım, şimdi herhangi bir yardım büyük bir memnuniyetle karşılanacaktır!

Ben geliştirici konsolunda bir çift daha farklılıkları fark ettik gönderme yana

,

eser diyene türü: belge ve başlatıcı: Diğer

Bilmeyen diyor türü: xhr ve başlatıcı: jquery-1.9.1.js:

Çalışma: ilgili fonksiyonlardır çağırır JS dosyalarında 8526

kod

self.getExtract = function (outputId) { 
     $.ajax({ 
      url: window.location + "/DownloadExtract", 
      data: {id: outputId} 
     }); 
}; 

Çalışmıyor:

self.downloadFile = function (id) { 
    $.ajax({ 
     url: window.location + "/downloadExtract", 
     data: {id: self.extractId, formatId: self.format} 
    }); 
}; 

Ve durumunda herhangi bir fark vbhtml dosyalarda bağlar yapar şunlardır:

Çalışma:

<td><a href="/ListExtracts/DownloadExtract?id={{extract.id}}">Download</a></td> 

Çalışmıyor:

<a target="_self" href="" ng-click="runExtract.downloadFile()"><i class="icon-download"> Download Extract</i> 

cevap

0

Doğru nedenlerle bir aptal olmak için yukarıdakilerin aslında Javascript'te çekmek yerine hiper bağlantıdan kontrolöre doğru gittiğini fark etmemiştim.

değiştirme için:

<a target="_self" href="/RunExtract/downloadExtract?id={{runExtract.extractId}}&formatId={{runExtract.format}}"><i class="icon-download"> Download Extract</i></a> 

hile mi!

....... evet şimdi aptalca hissediyorum!

İlgili konular