From 2698520aef593cbd746a64f79021a4c8d7c83d65 Mon Sep 17 00:00:00 2001 From: Ulion Date: Mon, 21 Jan 2013 23:20:09 +0100 Subject: formpost: support quotes, commas and semicolon in file names - document the double-quote and backslash need be escaped if quoting. - libcurl formdata escape double-quote in filename by backslash. - curl formparse can parse filename both contains '"' and ',' or ';'. - curl now can uploading file with ',' or ';' in filename. Bug: http://curl.haxx.se/bug/view.cgi?id=1171 --- tests/data/test1133 | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 tests/data/test1133 (limited to 'tests/data/test1133') diff --git a/tests/data/test1133 b/tests/data/test1133 new file mode 100644 index 000000000..733793114 --- /dev/null +++ b/tests/data/test1133 @@ -0,0 +1,95 @@ + + + +HTTP +HTTP FORMPOST + + +# Server-side + + +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 10 + +blablabla + + + +# Client-side + + +http + + +HTTP RFC1867-type formposting with filename contains ',', ';', '"' + + +http://%HOSTIP:%HTTPPORT/we/want/1133 -F "file=@\"log/test1133,a\\\"nd;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"log/test1133,a\"nd;.txt"' -F 'file3=@"log/test1133,a\"nd;.txt";type=m/f,"log/test1133,a\"nd;.txt"' + +# We create this file before the command is invoked! + +foo bar +This is a bar foo +bar +foo + + + +# Verify data after the test has been "shot" + + +^(User-Agent:|Content-Type: multipart/form-data;|Content-Type: multipart/mixed, boundary=|-------).* + + +POST /we/want/1133 HTTP/1.1 +User-Agent: curl/7.10.4 (i686-pc-linux-gnu) libcurl/7.10.4 OpenSSL/0.9.7a ipv6 zlib/1.1.3 +Host: %HOSTIP:%HTTPPORT +Accept: */* +Content-Length: 967 +Expect: 100-continue +Content-Type: multipart/form-data; boundary=----------------------------24e78000bd32 + +------------------------------24e78000bd32 +Content-Disposition: form-data; name="file"; filename="faker,and;.txt" +Content-Type: mo/foo + +foo bar +This is a bar foo +bar +foo + +------------------------------24e78000bd32 +Content-Disposition: form-data; name="file2"; filename="test1133,a\"nd;.txt" +Content-Type: text/plain + +foo bar +This is a bar foo +bar +foo + +------------------------------24e78000bd32 +Content-Disposition: form-data; name="file3" +Content-Type: multipart/mixed, boundary=----------------------------7f0e85a48b0b + +Content-Disposition: attachment; filename="test1133,a\"nd;.txt" +Content-Type: m/f + +foo bar +This is a bar foo +bar +foo + +Content-Disposition: attachment; filename="test1133,a\"nd;.txt" +Content-Type: text/plain + +foo bar +This is a bar foo +bar +foo + +------------------------------24e78000bd32-- + + + -- cgit v1.2.3