【问题标题】:apache FileUpload and HttpClient headers encodingapache FileUpload 和 HttpClient 标头编码
【发布时间】:2011-03-16 06:01:31
【问题描述】:

问题是关于 apache FileUpload servlet...

我一直在寻找这个答案,但由于没有任何帮助,我需要得到你的建议。我有一个上传 FileItems 的 servlet...问题是我想发送带有标题的文件名。使用 en 文件名字母非常好,但使用非 en 文件名字母会出错。例如,如果我得到 rus cirillic 文件名 servlet 将文件名作为“

【问题讨论】:

    标签: java file-io file-upload multifile-uploader


    【解决方案1】:

    您应该做的第一件事是将客户端页面上的编码设置为“UTF-8”-

    post.addRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8");
    

    还有在你的 UploadServlet 上做 -

     // Set character encoding in request
     request.setCharacterEncoding("UTF-8");
    
     // Get the file name after removing the path(this will ensure that you get the correct 
     //file name even in IE which sends the whole path)
    
     String fileName = org.apache.commons.io.FilenameUtils.getName(fileItem.getName());
    

    将其设置为 UTF-8 可确保文件名中的所有西里尔字符也有效。

    【讨论】:

    • 我使用的不是 jsp 而是 HttpClient 4 桌面应用程序 :) 所以我还没有找到如何使用 HttpClient 4 设置编码?请评论
    • 为 HTTPClient 更新了上述答案。
    • Emm... 但我使用 HttpPost。它不包含任何 addRequestHeader 方法 :( HttpPost 有 alt 方法吗?
    • 哦,我的...它没有帮助:(我不明白...我的文件名仍然是“-(57**#.txt”或其他东西。什么我会做错吗?我使用的是 HttpClient 4(最后一个版本),并且演示 lib 使用的 sn-ps 如此之少:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多