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