Yüklənmiş fayl HTTP status sətri ilə başlayanda
Yüklənmiş fayla HTTP cavab çərçivəsini daxil etməyin, proxy soketindən alınan hər baytı çıxış faylına köçürmək əvəzinə.
Əgər PDF və ya cədvəl hesab edilən fayl HTTP/1.1 200 OK ilə başlayırsa, yükləyici faylın özünü deyil, xam cavabı saxlayıb. Bu sxematik cavab yalnız dörd bayt məzmun daşıyır:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
4
DATA
0
Fayl DATA-dir. Status sətri, başlıqlar, ölçü işarəsi və bitirici struktur HTTP-yə aiddir. Sabit sayda bayt silmək təhlükəsiz deyil, çünki başlıqların uzunluğu dəyişir. İlk boş sətirdən sonrakı hər şeyi köçürmək yenə də parça çərçivəsini qoyur, informativ cavablar isə son cavabdan əvvəl gələ bilər.
Normal yükləmə üçün xam soketdən fayla köçürməni HTTP müştərisinin cavab-cisim interfeysi ilə əvəz edin. Onun proksisini konfiqurasiya edin, son statusu yoxlayın və cisimi müvəqqəti çıxışa axıdın. Müştəri mesaj çərçivəsini idarə edir: uzunluqla, parçalarla və bağlantı ilə sərhədlənmiş cisimlər fərqli təhlil tələb edir.
Məzmun kodlaşdırması daha bir laydır. Müştərinin sənədləşdirilmiş davranışına əsaslanaraq dekodlanmış fayl baytlarına, yoxsa açıq şəkildə tələb olunan xam məzmuna ehtiyacınız olduğunu qərar verin. Sıxılmış baytlar avtomatik olaraq proxy korrupsiyası deyil.
Tətbiq soket səviyyəsində kod saxlamalıdırsa, bütün bu təhlil qaydalarına və oxuma-yazma idarəsinə sahib olur. Yalnız oxuma ilə faktiki qaytarılan bayt sayını yazın, buferin tutumunu yox, və qismən yazmaları idarə edin. Əks halda köhnə bufer məzmunu hətta düzgün çıxarılmış cismi korlaya bilər.
HTTPS CONNECT cavabını soymaqdan çoxunu tələb edir: tunel qurulduqdan sonra təyinat TLS-ni qurun və sonra daxili HTTP cavabını təhlil edin. Proksinin başlıqlarından sonra gələn şifrələnmiş baytlar yüklənə bilən fayl deyil.
Uğursuz və ya natamam çıxışı müvəqqəti ad altında saxlayın. Onu yalnız ötürmə və fayl yoxlamaları uğurlu olduqdan sonra dərc edin; boş olmayan fayl tam yükləməni sübut etmir.