用struts获取上传文件名和解决中文乱码
Filter,过滤字符编码
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GB2312");
chain.doFilter(request, response);
}
Web.xml
<filter>
<filter-name>changeEncode</filter-name>
<filter-class>com.study.java.utils.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>changeEncode</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
在Action中得到路径 this.getServlet().getServletContext().getRealPath(“/”)
保存用struts获取的上传文件内容
//Action
//上传文件到服务器
FormFile file1 = userForm.getFile1();
response.setContentType("text/html;charset=UTF-8");
String fileName = file1.getFileName();
byte[] content = file1.getFileData();
InputStream contentStream = file1.getInputStream();
String saveDir = this.getServlet().getServletContext().getRealPath("/");
File file = new File(saveDir,fileName);
FileOutputStream fos = new FileOutputStream(file);
int len=0;
byte[] buf = new byte[1024];
while((len=contentStream.read(buf))!=-1){
fos.write(buf,0,len);
}
contentStream.close();
fos.close();
if(true){
return null;
}
//Struts 的FormBean
public class UserForm extends ActionForm {
private FormFile file1; //设计不是太合理,FormFile类是依赖于Struts的,离开了Struts就不行了
public FormFile getFile1() {
return file1;
}
public void setFile1(FormFile file1) {
this.file1 = file1;
}
在配置文件中配置上传文件的存储目录
首先,在WEB-INF目录下新建一个.properties文件里面存储想要存储的目录savedir=f/://strutsdemo//imgsv
创建一个单例类configManager
Public class configManager{
Priavete configManager(){}
Private static configManager instance = new configManager();
Public static configManager getInstance()
{
Return instance;
}
Static String saveDir = null;
Public static String getSaveDir(String configPath)