http - 解析 multipart/form-data 中的内容配置头文件名

标签 http multipartform-data content-disposition

根据 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/

相关文章:

java - 拦截和过滤 HTTP 请求

java - HTTP 向 Google App Engine 发送动态数据和从 Google App Engine 发送动态数据

http - 检测 HTTP POST 请求的字符编码

http - 如何编码大数字(在 URL 中)?

java - Multipart/form-data 如何隐藏参数

java - 使用 HTTPHandler 上传文件

java - Spring Boot表单数据请求与多个文件和Spring参数的映射

python - 在 Python 中通过没有 Content-Disposition 的 POST 发送文件

android - 在 Android 上通过浏览器下载文件时避免内容类型问题

java - 在浏览器中打开 poi excel