1

问题是关于 apache FileUpload servlet ...

我正在寻找这个答案很长一段时间,但由于没有任何帮助,我需要得到你的建议。我有一个上传 FileItems 的 servlet...问题是我想发送带有标题的文件名。使用 en 文件名字母非常好,但使用非 en 文件名字母会出错。例如,如果我得到 rus cirillic 文件名 servlet 将文件名作为“<80-9~.flv”或其他东西......所以 io.File 不想将其保存为文件名,因为“它不是文件name" :) 问题是如果 servlet 从 HttpClient 获取标头,如何控制标头编码?

4

1 回答 1

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 可确保文件名中的所有西里尔字符也有效。

于 2011-03-16T09:56:08.047 回答