Portál AbcLinuxu, 13. května 2025 19:45
wget --post-file=muj_soubor.xml http://localhost/program.py
[...] form = cgi.FieldStorage() print form [...]Odpověď ze serveru:
FieldStorage(None, None, [])Jak na to? Jak načíst XML soubor, který není obsažen v žádném formuláři? Dík
cat soubor.xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Execute service="WPS" version="0.4.0" store="true" status="false"> <ows:Identifier>Buffer</ows:Identifier> <DataInputs> <Input> <ows:Identifier>InputPolygon</ows:Identifier> <ows:Title>Playground area</ows:Title> <ComplexValueReference ows:reference="http://foo.bar/some_WFS_request.xml" schema="http://foo.bar/gml_polygon_schema.xsd" /> </Input> <Input> <ows:Identifier>BufferDistance</ows:Identifier> <ows:Title>Distance which people will walk to get to a playground</ows:Title> <LiteralValue uom="meters">400</LiteralValue> </Input> </DataInputs> <OutputDefinitions> <Output> <ows:Identifier>BufferedPolygon</ows:Identifier> <ows:Title>Area serviced by playground.</ows:Title> <ows:Abstract>Area within which most users of this playground will live.</ows:Abstract> </Output> </OutputDefinitions> </Execute>kde se prosím dočtu, jak by ta data měla vypadat? nepodařilo se mi zformulovat ten správný dotaz do googlu, w3.org po rychlém náhledu také mlčí. díky
FieldStorage()
nejspíš data poslaná přes POST zpracuje a vytváří z nich příslušné proměnné podle konvencí. Místo toho je potřeba mít přístup rovnou k streamu, který následuje v HTTP po hlavičkách. Nevím, zda to modul cgi umí, případně by bylo nutné zvolit jiný modul. A jenom číst ze standardního vstupu nelze?
for line in sys.stdin.readlines(): print linea nic :-/
print "HTTP/1.0 200 OK\r\n" print "Content-Type: text/plain" print "\r\n" for line in sys.stdin.readlines(): print line
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.