您的位置:首页 > 其它

解决硬编码的上传文件的方式及配置文件传值、url传值的中文乱码

2015-11-08 20:34 393 查看
配置文件:

<action name="download3" class="action.FileDownLoadAction3">

<!-- <param name="inputPath">/upload/struts2中文.txt</param> 这里有中文,在action中getter方法 中,需要转成iso-8859-1 -->

<result name="success" type="stream">
<param name="contentType">${contentType}</param>
<param name="inputName">targetFile</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="buffersize">4096</param>
</result>
<result name="login">/loginForm.jsp</result>
</action>
action:
package action;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class FileDownLoadAction3 extends ActionSupport {
private String fileName;
private String inputPath="/upload/";

public String getFileName() throws UnsupportedEncodingException {

//解决配置文件有中文的乱码
return new String(fileName.getBytes(),"ISO-8859-1");
}
public void setFileName(String fileName) {
try {

//解决url中有中文的乱码
fileName=new String(fileName.getBytes("ISO-8859-1"),"GBK");

} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.fileName = fileName;
}

public InputStream getTargetFile() throws Exception{
inputPath+=fileName;
return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
ActionContext ctx=ActionContext.getContext();
String user=(String)ctx.getSession().get("user");
if(user!=null&&user.equals("dxl")){
return SUCCESS;
}
this.addActionError("登录后方可允许下载文件");
return LOGIN;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: