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