根据 RFC,在 multipart/form-data content-disposition header 中 文件名字段作为参数接收 HTTP 引用字符串 - 字符串之间的字符串 字符 '\' 可以转义任何其他 ascii 字符。
问题是,网络浏览器不这样做。
IE6 发送:
Content-Disposition: form-data; name="file"; filename="z:\tmp\test.txt"
而不是预期的
Content-Disposition: form-data; name="file"; filename="z:\\tmp\\test.txt"
根据规则应该解析为z:tmptest.txt
,而不是z:\tmp\test.txt
。
例如,Firefox、Konqueror 和 Chrome 不会转义 "字符:
Content-Disposition: form-data; name="file"; filename=""test".txt"
而不是预期的
Content-Disposition: form-data; name="file"; filename="\"test\".txt"
那么...您建议如何处理这个问题?
有人有想法吗?
最佳答案
虽然是一个旧线程,但为可能感兴趣的人添加以下 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();
}
关于http - 解析 multipart/form-data 中的内容配置头文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934463/