使用Struts做文件下载的时候,一切正常,但是中文文件下载时出现了文件名乱码的情况,使用如下解决方法,直接上代码
public class UserFileDownload extends ActionSupport{
private static final long serialVersionUID = -3606632045724926052L;
private String fileName;
private InputStream inputStream;
<span style="color:#ff0000;"> public String getFileName() {
try {
return new String(fileName.getBytes(), "ISO8859-1"); //get文件名的时候,将其转换为ISO8859-1的格式,这个主要是http传输时规则导致
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return this.fileName;
}
}</span>
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream() {
System.out.println("/fileSpace/" + fileName);
inputStream = ServletActionContext.getServletContext().getResourceAsStream("/fileSpace/" + this.fileName);
return inputStream;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
struts.xml
<action name="userFileDownloadAction" class="com.fileupload.UserFileDownload">
<result type="stream">
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename=${fileName}</param>
</result>
</action>
以附件形式进行下载,加上attachment
注意,页面上选择文件的form控件的name必须为fileName,,要对应起来