Több szálon való töltésről lebeszélés
Szervusztok!
Valójában Java-ban dolgozom de tekintettel arra, hogy ez a probléma érzésem szerint platformfüggetlen illetve, hogy a Java topik majdnem halott, gondoltam itt teszem fel a kérdést.
File-ok letöltését ellenőrzötten (pl: jogosultság vizsgálat) kell végrehajtani, így nem adok közvetlen linket a filerendszerben lévő fileokra, hanem egy köztes réteg szolgálja ki azokat. Azaz nyitok egy stream-et és elkezdem belelapátolni a file-t. Nem nagy dolog. A probléma az hogy egyes böngészőbe beépülő program, pl adobe reader plugin, nem az elejétől a végéig egy menetben töltené le, hanem több szálat indítana részenként töltve le ami nem jön neki össze így elhasal a letöltés. Kérésem az, hogy lehet-e ezt valamilyen HTTP header-ben szabályozni, hogy milyen letöltési módok engedélyezettek?
Jelenleg ennyi van beállítva:
response.setContentType(contentType);
response.setContentLength(fileSize);
response.setHeader("Content-Disposition", "attachment; filename=[" + fileName + "]");
--
sirkalmi
■ Valójában Java-ban dolgozom de tekintettel arra, hogy ez a probléma érzésem szerint platformfüggetlen illetve, hogy a Java topik majdnem halott, gondoltam itt teszem fel a kérdést.
File-ok letöltését ellenőrzötten (pl: jogosultság vizsgálat) kell végrehajtani, így nem adok közvetlen linket a filerendszerben lévő fileokra, hanem egy köztes réteg szolgálja ki azokat. Azaz nyitok egy stream-et és elkezdem belelapátolni a file-t. Nem nagy dolog. A probléma az hogy egyes böngészőbe beépülő program, pl adobe reader plugin, nem az elejétől a végéig egy menetben töltené le, hanem több szálat indítana részenként töltve le ami nem jön neki össze így elhasal a letöltés. Kérésem az, hogy lehet-e ezt valamilyen HTTP header-ben szabályozni, hogy milyen letöltési módok engedélyezettek?
Jelenleg ennyi van beállítva:
response.setContentType(contentType);
response.setContentLength(fileSize);
response.setHeader("Content-Disposition", "attachment; filename=[" + fileName + "]");
--
sirkalmi
Range
wasistdas
Amúgy lehet, hogy nem is ez volt a baja. Ész nélkül beállítottam egy csomó header-t és megjavult. Most ezek vannak beállítva:
response.setContentType(contentType);
response.setContentLength(fileSize);
response.setHeader("Content-Disposition", "attachment; filename=[" + fileName + "]");
response.setHeader("Accept-Ranges", "bytes");
response.setHeader("Content-Transfer-Encoding", "Binary");
response.setHeader("Pragma", "public");
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "private");
response.setHeader("Content-Description", "File Transfer");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
--
sirkalmi
HTTP 1.1
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
Ha látni akarod, hogy működik a gyakorlatban, akkor iktass be valami loggert a kliens (Acrobat) és a szerver közé, és mindjárt meglátod, milyen fejlécekkel operál. Nem atomfizika...
Köszi!
--
sirkalmi
Minimál megoldás
1) A hosts fájlodban átirányítod a vizsgálandó hostot 127.0.01-re, vagy
2) Keresel egy proxyt, azt fűzöd be, és a böngészőben meg a lokál portot adod meg, mint proxyt.
Fapados, de ha kell, dobj egy privátot, és megkapod.
Range header
Üdv,
Felhő