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