Fájl letöltés és feltöltés segítségével httphandler vagy letölthető - feltöltés

Nemrég volt a lehetőség, hogy megvalósítsa a kisülés (feltöltés), hogy a szerver a nagy fájlok és kérdés (letöltés) a felhasználó fájlt. Úgy döntött, hogy csináld segítségével HttpHandler. Az elv alkalmazásával IHttpHandler nagyon egyszerű, de vannak árnyalatok.







Válassza ki az üzenet típusát

Ha adsz egy felhasználó letölt egy fájlt, akkor megjelenik egy párbeszédablak. Az ablak a „Megnyitás” gombra, a „Save” és a „Mégse” gombra. Ha azt szeretnénk, hogy ahelyett, hogy ezeket a gombokat más volt a párbeszéd a „Mentés”, akkor érdemes használni:

És mi ContentType?

A folyamat kialakulásának választ a szerver, nem számít, hogy milyen környezetben, Web API, HttpHandler, HTTP-modult, vagy akár csak egy ActionResult, WebForms sőt, szükségszerűen kell adni a visszatérési típusú tartalom. Azt javaslom, hogy segítheti a funkciót.

Véleményem szerint ez hasznos módszer mentheti meg egy csomó időt, mindenki javára, amit én gyakran használják őket.

Alkalmazási példa

Egy egyszerű példa azt mutatják, hogy ez a módszer használható. Tegyük fel, hogy van egy WebForms projekt. Egy olyan fájlt (word.doc) kiadott egy oldal kiszámításának. Legyen az én DownloadFile () magán az eljárást hívjuk a Page_Load módszer:

10. sor csak az úgynevezett motoros módszerrel, amely meghatározza, hogy bővítse a „jobb” típusú visszaadott tartalom.







Response.TransmitFile () vs Response.WriteFile ()

Néhány szó a 12. sorban az előző lista. Kétféleképpen „adni”, hogy a felhasználó fájlt. Ön dönti el, hogy melyiket használja.

TransmitFile () - módszer elküldi a fájlt a kliens nélkül letölti a fájlt a szerver memória (alkalmazás memória). Ez helyes megoldás a nagy fájlok letöltése.

WriteFile () - módszer betölti a fájlt a szerver memóriájában, mielőtt elküldené az ügyfélnek. Ez a módszer sokkal előnyösebb zagruzhze kis- és közepes méretű fájlokat.

A kirakodás a nagy fájlok, nem nagy ügy. Nem megalapozatlannak egy példát fájl letöltése, vagy inkább képek a szerveren. Régebben ez a HttpHandler lehet képeket feltölteni a szerverre a Silverlight-alkalmazások.

Így egy 14-line ügyfél „kimondja, hogy” a fájl egy része sikeresen mentett és ez azt jelenti, hogy akkor küldje el a következő.

Az egyetlen dolog megemlíteni azt a tényt, hogy a maximális méret a letölteni kívánt fájlt a szerverre lehet állítani a konfigurációs fájlban (web.config):

És hogy őszinte legyek, abban a pillanatban van egy hatalmas számú ingyenes alkatrészek és ellenőrzése külső fejlesztők, akik egyszerűen és segít, amennyire csak lehetséges, hogy megoldja ezt a problémát. Például, AjaxControlToolkit.

Nos, ez csak a lényeg, ez azt jelenti, asp.net közvetlenül (előkezelés nélkül fragmentáció és feldolgozás), nagy fájlt a szerver nem zalosh, míg mások (azaz amelyek nem ASPNET :)) lehetővé teszi ezeket a dolgokat a youtube-on az én lehetett egyszerűen bravzera öntsük egy nagy fájlt. Igen, értem a hiányosságokat -, hogy ha a végén a kapcsolat navernotsya, majd hajtsa végre újra, stb - de akkor is.

Ezért lehetőség Toko juzat natív harmadik fél modulok IIS, amely lehetővé teszi, hogy kezelni tudja a beérkező áramlását nem kényszeríti a memóriába

Ha rossz helyes.

Knockout: hozzon létre egy olyan területen, autók, vagy helyettesítés automatikus kiegészítés a knockoutjs