Vra

Ek gebruik 'n perl script te plaas om Google programenjin aansoek. Ek plaas 'n teks lêer met 'n paar XML met behulp van die -F opsie.

http://www.cpan.org/authors /id/E/EL/ELIJAH/bget-1.1

Daar is 'n weergawe 1.2, reeds getoets en kry dieselfde probleem. Die post lyk iets soos hierdie.

Host: foo.appspot.com
User-Agent: lwp-request/1.38
Content-Type: text/plain
Content-Length: 202

<XML>
   <BLAH>Hello World</BLAH>
</XML>

Ek het die voorbeeld verander sodat die 202 is nie reg nie, moenie bekommerd wees oor dit. Op die probleem. Die inhoud-lengte ooreenstem met die aantal grepe op die lêer egter tensy ek met die hand die inhoud-Lengte dit nie al van die lêer te stuur verhoog, 'n paar grepe kry kapt. Die aantal grepe afgekap is nie dieselfde vir lêers van verskillende groottes. Ek gebruik die r opsie op die script en ek kan sien hoe dit stuur en dit is die stuur van al die lêer, maar Google programenjin self.request.body toon dat nie alles ontvang. Ek dink die oplossing is om die regte nommer vir inhoud-lengte kry en glo dit is nie so eenvoudig soos aantal grepe op die lêer of die perl script is dit een of ander manier mangling.

Update: Te danke aan Erickson vir die regte antwoord. Ek gebruik printf karakters voeg tot die einde van die lêer en dit altyd kapt presies die aantal lyne in die lêer. Ek veronderstel ek kon uitvind wat word bygevoeg deur iterating deur elke karakter op die bediener kant, maar nie die moeite werd. Dit is nie eens beantwoord oor op die Google Groups vir die opstel van app enjin!

Was dit nuttig?

Oplossing

Is die aantal ekstra grepe jy gelyk is aan die aantal lyne in die lêer nodig? Ek vra, want miskien sy moontlik dat een of ander manier vervoer-opbrengste word bekendgestel maar nie getel nie.

Ander wenke

Ek het in soortgelyke probleme voor loop.

Ek neem aan jy gebruik die lengte () funksie om die grootte van die lêer bepaal? As dit so is, is dit;. S waarskynlik die data wat jy plaas is UTF-8 geïnkripteer, in plaas van ASCII

Om die korrekte telling wat jy mag nodig wees om 'n add kry "gebruik grepe;" pragma om die top van jou script, of draai die lengte oproep in 'n blok:

my $size;
do {use bytes; $size = length($file_data)}

Van die perlfunc man bladsy:

"Let op die karakters. As die Expr is in Unicode, sal jy die aantal karakters, nie die aantal grepe kry"

Hoe kry jy die aantal grepe? .. Deur te kyk na die grootte van die lêer op die lêerstelsel?

Jy kan "-s" gebruik om die grootte van die lêer te kry.

Of, as jy wil meer doen, jy kan Lêer :: Rom

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top