eksik.
Sorun, indirilen dosyanın sonunun eksik olmasıdır.sonu ben sunucudan bir dosya indirme ile ilgili bazı sorunlar yaşıyorum
Ben benzer sorunlarınız diğer insanların bazı göstergeler bulundu, ancak benim sorunum bana yardımcı bir şey var.
Hata ayıklama yaparken, fileData
uzunluğunun doğru olduğunu öğrendim ve BinaryWrite
numaralı telefonu ararken tüm veriler bayt dizisinde mevcut. BinaryWrite
, Flush
veya Close
çağrıları bırakır
... Ben yaklaşık Burada örneğin Response.End
veya Response.Close
kullanmayan okudum:
HttpResponse.End vs HttpResponse.Close vs HttpResponse.SuppressContent ve muhtemel bir sebep gibi görünüyor, ama ne yerine kullanması gereken (çalıştık Response.Close
'u tamamen kaldırın, ancak bu çok fazla veri çıkışıyla sonuçlanır.
Birisi bu davranışa neden olabilir ve nasıl düzeltebilirim ne bilir?
DÜZENLEME: Sadece Response.ContentType = "binary/octet-stream";
ile çalıştı ve bir cazibe gibi çalışıyor!
Böyle bir davranışa neden olabilecek metin/düz ve ikili/oktet akışı arasındaki fark nedir? Hatta Close
çağrısı olmadan çalışır
...
FAZLA DÜZENLEME: Yanıtların sıkıştırma sunucu tarafında aktive edilmiş gibi görünüyor. Görünüşe göre, sıkıştırma etkinken düz metin akışlarıyla ilgili bir sorun var gibi görünüyor.
Ben kodudur: sıkıştırma sunucu tarafında (IIS) üzerinde aktiftir
private void DownloadFile(byte[] fileData, string fileName, string fileExtension)
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=" + fileName + fileExtension);
Response.AddHeader("Content-Length", fileData.Length.ToString(CultureInfo.InvariantCulture));
Response.ContentType = "text/plain";
Response.BinaryWrite(fileData);
Response.Flush();
Response.Close();
}
Response.Flush(); Yanıt .Close(); Response.End(); – jackjop
Denedim, ama zar yok ... Artık "End" 'e bir çağrı eklemenin ne kadar yararlı olacağından emin olun, çünkü "Close" de başarısız oldu ... Ve benim durumumda "End" ve "Close" aynı şeyi üretecekti çünkü aramadan sonra işleyecek başka bir şeyim yok. – Falchion
hmm, belki dosyanız çok büyük. Bu şekilde deneyebilir misin? (kabul edilen cevapta) http://stackoverflow.com/questions/37650/how-to-implement-a-file-download-in-asp-net – jackjop