|
Jim Gallacher
jpg at jgassociates.ca
Wed Apr 5 08:32:07 EDT 2006
I don't have time to look at this in any detail right now, but I agree
that it looks malformed. The last part of post.dat really shoud be:
------------KM7GI3gL6cH2gL6gL6cH2gL6cH2KM7\r\n
Content-Disposition: form-data; name="Upload"\r\n
\r\n
Submit Query\r\n
------------KM7GI3gL6cH2gL6gL6cH2gL6cH2KM7
mod_python 3.2.8 should handle embedded \r\n or \r\r sequences in the
file contents correctly. There is even a unit test for this. ;)
Jim
Graham Dumpleton wrote:
> I am coming to the conclusion that the file produced by Flash is
> malformed.
>
> Even if I were to get rid of the double \r\r sequences, replacing them
> with a
> single \r, you end up with no blank like after:
>
> Content-Disposition: form-data; name="Upload"
>
> which means that:
>
> Submit Query
>
> gets interpreted as a header and thus why it dies as there is no colon
> on that
> line.
>
> Anyone got any better ideas?
>
> Bedtime for me now.
>
> Graham
>
> On 05/04/2006, at 9:32 PM, Graham Dumpleton wrote:
>
>>
>> On 05/04/2006, at 9:28 PM, Harold J. Ship wrote:
>>
>>> Ok, here's the output.
>>>
>>> ------------KM7GI3gL6cH2gL6gL6cH2gL6cH2KM7
>>>
>>> Content-Disposition: form-data; name="Filename"
>>>
>>>
>>>
>>> sample.txt
>>>
>>> ------------KM7GI3gL6cH2gL6gL6cH2gL6cH2KM7
>>>
>>> Content-Disposition: form-data; name="Filedata"; filename="sample.txt"
>>>
>>> Content-Type: application/octet-stream
>>>
>>>
>>>
>>> Start of Sample Text File Contents
>>>
>>> End of Sample Text File Contents
>>>
>>>
>>>
>>> ------------KM7GI3gL6cH2gL6gL6cH2gL6cH2KM7
>>>
>>> Content-Disposition: form-data; name="Upload"
>>>
>>> Submit Query
>>>
>>> ------------KM7GI3gL6cH2gL6gL6cH2gL6cH2KM7
>>
>>
>> I'm not an expert on FieldStorage as I stayed out of all the
>> discussions on
>> it when it was being improved. I am also not up on what the content type
>> application/x-www-form-urlencoded is all about. All the same, I'll share
>> what I found so far in case it helps someone else.
>>
>> First off, I don't get an error, but I don't believe I get correct
>> results either.
>> To test, what I did was create a handler containing:
>>
>> from mod_python import apache, util
>>
>> def handler(req):
>>
>> apache.log_error('headers_in=%s'%req.headers_in)
>>
>> req.content_type = 'text/plain'
>>
>> form = util.FieldStorage(req)
>>
>> for field in form.list:
>> apache.log_error('name=%s' % `field.name`)
>> apache.log_error('value=%s' % `field.value`)
>>
>> req.write('done')
>>
>> return apache.OK
>>
>>
>> I then used "ab" to post your file to a URL mapping to that handler.
>>
>> ab -p post.dat -T 'multipart/form-data; boundary=----------
>> KM7GI3gL6cH2gL6gL6cH2gL6cH2KM7^M' http://localhost:8082/testing/
>> upload-1/dummy
>>
>> Note that that is actually a real \r (CR) where ^M is shown in the
>> boundary.
>> Without that it wouldn't work. I am not sure though whether that is
>> simply due
>> to CR LF weirdness in way file was created and then how it is being
>> interpreted
>> by "ab" on Mac OS X when given to it as input.
>>
>> Anyway, result of that is:
>>
>> [Wed Apr 05 21:26:24 2006] [error] headers_in={'Content-type':
>> 'multipart/form-data; boundary=----------
>> KM7GI3gL6cH2gL6gL6cH2gL6cH2KM7\r', 'Content-length': '498', 'Accept':
>> '*/*', 'Host': 'localhost:8082', 'User-Agent': 'ApacheBench/1.3d'}
>> [Wed Apr 05 21:26:24 2006] [error] [client 127.0.0.1] PythonHandler
>> upload: Traceback (most recent call last):
>> [Wed Apr 05 21:26:24 2006] [error] [client 127.0.0.1] PythonHandler
>> upload: File "/System/Library/Frameworks/Python.framework/
>> Versions/2.3/lib/python2.3/site-packages/mod_python/apache.py", line
>> 308, in HandlerDispatch\n result = object(req)
>> [Wed Apr 05 21:26:24 2006] [error] [client 127.0.0.1] PythonHandler
>> upload: File "/Users/grahamd/Workspaces/testing/upload-1/
>> upload.py", line 9, in handler\n form = util.FieldStorage(req)
>> [Wed Apr 05 21:26:24 2006] [error] [client 127.0.0.1] PythonHandler
>> upload: File "/System/Library/Frameworks/Python.framework/
>> Versions/2.3/lib/python2.3/site-packages/mod_python/util.py", line
>> 180, in __init__\n h, v = line.split(":", 1)
>> [Wed Apr 05 21:26:24 2006] [error] [client 127.0.0.1] PythonHandler
>> upload: ValueError: unpack list of wrong size
>>
>> Thus, have duplicated it.
>>
>> Note that this may possibly be something to do with strangeness in
>> line endings.
>> First their was the issue above with CR, but there are other nasties
>> in input with
>> CR LF. See following "od" dump.
>>
>> 0000000 - - - - - - - - - - - - K M 7 G
>> 0000020 I 3 g L 6 c H 2 g L 6 g L 6 c H
>> 0000040 2 g L 6 c H 2 K M 7 \r \r \n C o n
>> 0000060 t e n t - D i s p o s i t i o n
>> 0000100 : f o r m - d a t a ; n a m
>> 0000120 e = " F i l e n a m e " \r \r \n \r
>> 0000140 \r \n s a m p l e . t x t \r \r \n -
>> 0000160 - - - - - - - - - - - K M 7 G I
>> 0000200 3 g L 6 c H 2 g L 6 g L 6 c H 2
>> 0000220 g L 6 c H 2 K M 7 \r \r \n C o n t
>> 0000240 e n t - D i s p o s i t i o n :
>> 0000260 f o r m - d a t a ; n a m e
>> 0000300 = " F i l e d a t a " ; f i l
>> 0000320 e n a m e = " s a m p l e . t x
>> 0000340 t " \r \r \n C o n t e n t - T y p
>> 0000360 e : a p p l i c a t i o n / o
>> 0000400 c t e t - s t r e a m \r \r \n \r \r
>> 0000420 \n S t a r t o f S a m p l e
>> 0000440 T e x t F i l e C o n t e
>> 0000460 n t s \r \r \n E n d o f S a m
>> 0000500 p l e T e x t F i l e C o
>> 0000520 n t e n t s \r \r \n \r \r \n - - - -
>> 0000540 - - - - - - - - K M 7 G I 3 g L
>> 0000560 6 c H 2 g L 6 g L 6 c H 2 g L 6
>> 0000600 c H 2 K M 7 \r \r \n C o n t e n t
>> 0000620 - D i s p o s i t i o n : f o
>> 0000640 r m - d a t a ; n a m e = " U
>> 0000660 p l o a d " \r \r \n S u b m i t
>> 0000700 Q u e r y \r \r \n - - - - - - - -
>> 0000720 - - - - K M 7 G I 3 g L 6 c H 2
>> 0000740 g L 6 g L 6 c H 2 g L 6 c H 2 K
>> 0000760 M 7
>> 0000762
>>
>> See the "\r \r \n \r \r \n" sequences.
>>
>> Not sure that I'll have much more time to play with this tonight, so
>> posting this
>> progress in case someone else wants to pick up and continue.
>>
>> Graham
>>
>>
>>
>>
>>
>> _______________________________________________
>> Mod_python mailing list
>> Mod_python at modpython.org
>> http://mailman.modpython.org/mailman/listinfo/mod_python
>
>
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python
>
|