2009-07-24 21 views
10

Yüklenmiş bir dosyayı ASP.NET'te aldığınızda, genellikle bir HttpPostedFile nesnesi aracılığıyla gerçekleştirirsiniz. Alınan veriler HttpPostedFile.InputStream aracılığıyla kullanılabilir. o ASP.NET çerçeve tarafından yaptıysa Bu Kendim elden gerekmez inanmak bana yol açacak bir özellik, ancak dokümantasyon akışını bertaraf için kimin sorumlu olduğunu bahseder asla ve, öyle yapar (diyelim ki, seansta akışı kaydedebilir miyim?). ŞimdiHttpPostedFile.InputStream - ve ne zaman kullanılmalıdır?

, bunu birçok dosya almak yoktur ve ben bu belirli akışı imha için değil sorunlarla değil, ama temizlik - Burada kimse tasarım sözleşme nedir biliyor? Ben en kısa sürede istek işleme tamamlanır tamamlanmaz serbest kalır söyleyebilirim onunla çalışmak benim deneyim

cevap

7

. Bir örnek havaya bir top atmak olsaydı. Eğer onu yakalamazsam ve yere çarparsam ... bertaraf edilir. Onu yakalarsam ve onunla bir şeyler yaparsam ... ve sonra bıraktığım şey bertaraf edilir. Bir sonraki istekte oynamak için etrafta takılmıyor!

Ben NOOOOOO söyleyebilirim oturumda saklayarak sorununa değinen! Bir süre etrafta olmak için ihtiyacınız varsa, dosya sistemine yazın. İhtiyacınız olduğunda tekrar bir akış olarak yeniden oluşturun ve onunla oynayın. Bir dosya akışını oturumda saklamak (bir bayt dizisi olarak belki de?), Oturum (bellek) kaynaklarınızın büyük bir kaybı gibi görünür.

+0

Kuşkusuz, oturumdaki şeyi saklamak kötü bir fikir gibi geliyor; Sadece akışın tam ömrünü bilmek için uygun olacak bir örnek bulmaya çalışıyordum. Belki daha iyi bir örnek görüntü işlemek ve kaydetmek için bir arka plan işçi çalıştırmak ve ön planda WebRequest ile sürdürmektedir olacaktır - web isteği işçinin önce tamamlamak olabilir, bu nedenle dere kesin geçersiz hale geldiğinde bilmek gerekiyordu. Her halükarda, haklısınız - bu konuda microsoft'tan daha iyi dokümanları takdir etsem de (çok sayıda tekil meselede olduğu gibi). –

+0

Bir arkaplan işlemine vermek isteyip istemeseniz de ... ki bu harika bir şey ... Dosyayı dosya sistemine kaydederim ve dosyaya bir referans ileterek örneği arka plana aktarır dere. –

+0

InputStream'in kontrolümün ötesinde kapalı olduğu göz önünde bulundurulduğunda, kesinlikle böyle bir şey yapacağız - ama genel olarak, darboğazlardan kaçınmak için, geçici disk erişiminden kaçınmayı tercih ediyorum - ve geçici olsa da büyük bayt dizisi sorun değil. Her neyse, bilgi için teşekkürler! –

İlgili konular