• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<meta charset="utf-8" />
3<title>Upload files named using punctuation</title>
4<link
5  rel="help"
6  href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data"
7/>
8<link
9  rel="help"
10  href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist"
11/>
12<link rel="help" href="https://w3c.github.io/FileAPI/#file-constructor" />
13<link
14  rel="author"
15  title="Benjamin C. Wiley Sittler"
16  href="mailto:bsittler@chromium.org"
17/>
18<script src="/resources/testharness.js"></script>
19<script src="/resources/testharnessreport.js"></script>
20<script src="../support/send-file-form-helper.js"></script>
21<script>
22  "use strict";
23
24  // These have characters that undergo processing in name=,
25  // filename=, and/or value; formPostFileUploadTest postprocesses
26  // expectedEncodedBaseName for these internally.
27
28  formPostFileUploadTest({
29    fileNameSource: "ASCII",
30    fileBaseName: "file-for-upload-in-form-QUOTATION-MARK-[\x22].txt",
31    formEncoding: "UTF-8",
32    expectedEncodedBaseName:
33      "file-for-upload-in-form-QUOTATION-MARK-[\x22].txt",
34  });
35
36  formPostFileUploadTest({
37    fileNameSource: "ASCII",
38    fileBaseName: '"file-for-upload-in-form-double-quoted.txt"',
39    formEncoding: "UTF-8",
40    expectedEncodedBaseName: '"file-for-upload-in-form-double-quoted.txt"',
41  });
42
43  formPostFileUploadTest({
44    fileNameSource: "ASCII",
45    fileBaseName: "file-for-upload-in-form-REVERSE-SOLIDUS-[\\].txt",
46    formEncoding: "UTF-8",
47    expectedEncodedBaseName:
48      "file-for-upload-in-form-REVERSE-SOLIDUS-[\\].txt",
49  });
50
51  // The rest should be passed through unmodified:
52
53  formPostFileUploadTest({
54    fileNameSource: "ASCII",
55    fileBaseName: "file-for-upload-in-form-EXCLAMATION-MARK-[!].txt",
56    formEncoding: "UTF-8",
57    expectedEncodedBaseName: "file-for-upload-in-form-EXCLAMATION-MARK-[!].txt",
58  });
59
60  formPostFileUploadTest({
61    fileNameSource: "ASCII",
62    fileBaseName: "file-for-upload-in-form-DOLLAR-SIGN-[$].txt",
63    formEncoding: "UTF-8",
64    expectedEncodedBaseName: "file-for-upload-in-form-DOLLAR-SIGN-[$].txt",
65  });
66
67  formPostFileUploadTest({
68    fileNameSource: "ASCII",
69    fileBaseName: "file-for-upload-in-form-PERCENT-SIGN-[%].txt",
70    formEncoding: "UTF-8",
71    expectedEncodedBaseName: "file-for-upload-in-form-PERCENT-SIGN-[%].txt",
72  });
73
74  formPostFileUploadTest({
75    fileNameSource: "ASCII",
76    fileBaseName: "file-for-upload-in-form-AMPERSAND-[&].txt",
77    formEncoding: "UTF-8",
78    expectedEncodedBaseName: "file-for-upload-in-form-AMPERSAND-[&].txt",
79  });
80
81  formPostFileUploadTest({
82    fileNameSource: "ASCII",
83    fileBaseName: "file-for-upload-in-form-APOSTROPHE-['].txt",
84    formEncoding: "UTF-8",
85    expectedEncodedBaseName: "file-for-upload-in-form-APOSTROPHE-['].txt",
86  });
87
88  formPostFileUploadTest({
89    fileNameSource: "ASCII",
90    fileBaseName: "file-for-upload-in-form-LEFT-PARENTHESIS-[(].txt",
91    formEncoding: "UTF-8",
92    expectedEncodedBaseName: "file-for-upload-in-form-LEFT-PARENTHESIS-[(].txt",
93  });
94
95  formPostFileUploadTest({
96    fileNameSource: "ASCII",
97    fileBaseName: "file-for-upload-in-form-RIGHT-PARENTHESIS-[)].txt",
98    formEncoding: "UTF-8",
99    expectedEncodedBaseName:
100      "file-for-upload-in-form-RIGHT-PARENTHESIS-[)].txt",
101  });
102
103  formPostFileUploadTest({
104    fileNameSource: "ASCII",
105    fileBaseName: "file-for-upload-in-form-ASTERISK-[*].txt",
106    formEncoding: "UTF-8",
107    expectedEncodedBaseName: "file-for-upload-in-form-ASTERISK-[*].txt",
108  });
109
110  formPostFileUploadTest({
111    fileNameSource: "ASCII",
112    fileBaseName: "file-for-upload-in-form-PLUS-SIGN-[+].txt",
113    formEncoding: "UTF-8",
114    expectedEncodedBaseName: "file-for-upload-in-form-PLUS-SIGN-[+].txt",
115  });
116
117  formPostFileUploadTest({
118    fileNameSource: "ASCII",
119    fileBaseName: "file-for-upload-in-form-COMMA-[,].txt",
120    formEncoding: "UTF-8",
121    expectedEncodedBaseName: "file-for-upload-in-form-COMMA-[,].txt",
122  });
123
124  formPostFileUploadTest({
125    fileNameSource: "ASCII",
126    fileBaseName: "file-for-upload-in-form-FULL-STOP-[.].txt",
127    formEncoding: "UTF-8",
128    expectedEncodedBaseName: "file-for-upload-in-form-FULL-STOP-[.].txt",
129  });
130
131  formPostFileUploadTest({
132    fileNameSource: "ASCII",
133    fileBaseName: "file-for-upload-in-form-SOLIDUS-[/].txt",
134    formEncoding: "UTF-8",
135    expectedEncodedBaseName: "file-for-upload-in-form-SOLIDUS-[/].txt",
136  });
137
138  formPostFileUploadTest({
139    fileNameSource: "ASCII",
140    fileBaseName: "file-for-upload-in-form-COLON-[:].txt",
141    formEncoding: "UTF-8",
142    expectedEncodedBaseName: "file-for-upload-in-form-COLON-[:].txt",
143  });
144
145  formPostFileUploadTest({
146    fileNameSource: "ASCII",
147    fileBaseName: "file-for-upload-in-form-SEMICOLON-[;].txt",
148    formEncoding: "UTF-8",
149    expectedEncodedBaseName: "file-for-upload-in-form-SEMICOLON-[;].txt",
150  });
151
152  formPostFileUploadTest({
153    fileNameSource: "ASCII",
154    fileBaseName: "file-for-upload-in-form-EQUALS-SIGN-[=].txt",
155    formEncoding: "UTF-8",
156    expectedEncodedBaseName: "file-for-upload-in-form-EQUALS-SIGN-[=].txt",
157  });
158
159  formPostFileUploadTest({
160    fileNameSource: "ASCII",
161    fileBaseName: "file-for-upload-in-form-QUESTION-MARK-[?].txt",
162    formEncoding: "UTF-8",
163    expectedEncodedBaseName: "file-for-upload-in-form-QUESTION-MARK-[?].txt",
164  });
165
166  formPostFileUploadTest({
167    fileNameSource: "ASCII",
168    fileBaseName: "file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^].txt",
169    formEncoding: "UTF-8",
170    expectedEncodedBaseName:
171      "file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^].txt",
172  });
173
174  formPostFileUploadTest({
175    fileNameSource: "ASCII",
176    fileBaseName: "file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[].txt",
177    formEncoding: "UTF-8",
178    expectedEncodedBaseName:
179      "file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[].txt",
180  });
181
182  formPostFileUploadTest({
183    fileNameSource: "ASCII",
184    fileBaseName: "file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[]].txt",
185    formEncoding: "UTF-8",
186    expectedEncodedBaseName:
187      "file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[]].txt",
188  });
189
190  formPostFileUploadTest({
191    fileNameSource: "ASCII",
192    fileBaseName: "file-for-upload-in-form-LEFT-CURLY-BRACKET-[{].txt",
193    formEncoding: "UTF-8",
194    expectedEncodedBaseName:
195      "file-for-upload-in-form-LEFT-CURLY-BRACKET-[{].txt",
196  });
197
198  formPostFileUploadTest({
199    fileNameSource: "ASCII",
200    fileBaseName: "file-for-upload-in-form-VERTICAL-LINE-[|].txt",
201    formEncoding: "UTF-8",
202    expectedEncodedBaseName: "file-for-upload-in-form-VERTICAL-LINE-[|].txt",
203  });
204
205  formPostFileUploadTest({
206    fileNameSource: "ASCII",
207    fileBaseName: "file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}].txt",
208    formEncoding: "UTF-8",
209    expectedEncodedBaseName:
210      "file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}].txt",
211  });
212
213  formPostFileUploadTest({
214    fileNameSource: "ASCII",
215    fileBaseName: "file-for-upload-in-form-TILDE-[~].txt",
216    formEncoding: "UTF-8",
217    expectedEncodedBaseName: "file-for-upload-in-form-TILDE-[~].txt",
218  });
219
220  formPostFileUploadTest({
221    fileNameSource: "ASCII",
222    fileBaseName: "'file-for-upload-in-form-single-quoted.txt'",
223    formEncoding: "UTF-8",
224    expectedEncodedBaseName: "'file-for-upload-in-form-single-quoted.txt'",
225  });
226</script>
227