Art*_*yom 10 http multipartform-data content-disposition
根据RFC,在multipart/form-data content-disposition头文件名字段中接收作为参数的HTTP引用字符串 - 字符串之间的字符串'\'可以转义任何其他ascii字符.
问题是,Web浏览器不这样做.
IE6发送:
Content-Disposition: form-data; name="file"; filename="z:\tmp\test.txt"
Run Code Online (Sandbox Code Playgroud)
而不是预期
Content-Disposition: form-data; name="file"; filename="z:\\tmp\\test.txt"
Run Code Online (Sandbox Code Playgroud)
哪个应该z:tmptest.txt按照规则解析而不是z:\tmp\test.txt.
Firefox,Konqueror和Chrome不会逃脱"角色":
Content-Disposition: form-data; name="file"; filename=""test".txt"
Run Code Online (Sandbox Code Playgroud)
而不是预期
Content-Disposition: form-data; name="file"; filename="\"test\".txt"
Run Code Online (Sandbox Code Playgroud)
那么......你会如何建议处理这个问题?
有人有想法吗?
虽然是一个旧线程,但为可能感兴趣的人添加以下 java 解决方案。
// import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.*;
try {
ContentDisposition contentDisposition = new ContentDisposition("attachment; filename=\"myfile.log\"; filename*=UTF-8''myfile.log");
System.out.println(contentDisposition.getParameter("filename"));
} catch (ParseException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
您是否有理由需要解析该文件名?
至少一致的一件事是filename标头部分以双引号结尾,因此您只需读取filename="和最终 "之间的所有内容。
然后,您可以将\\,\"以外的任何反斜杠\"视为文字反斜杠,除非您认为用户特别有可能上传带有制表符的文件名。:)
| 归档时间: |
|
| 查看次数: |
6747 次 |
| 最近记录: |