|
Graham Dumpleton
grahamd at dscpl.com.au
Wed Apr 5 07:47:09 EDT 2006
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
|