struts接收url文件使用upload.parseRequest 获取文件为空的问题
2016-01-22 19:39
501 查看
参考 http://blog.csdn.net/jimmy609/article/details/43648475
public void upload3(HttpServletRequest request) {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
if(item.isFormField()){
}else{
//item.write(new File(""));
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
将request重新转换成MultiPartRequestWrapper 如下
public String updateUserPhoto(){
String userId = request.getParameter("mobile");
String fileName = null;
ServletContext context = request.getSession().getServletContext();
String temp = context.getRealPath("/")+"temp";
System.out.println("temp="+temp);
String imgPath = context.getRealPath("/")+"image";
System.out.println("imgPath is "+imgPath);
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
request = (HttpServletRequest)wrapper.getRequest();
Enumeration<String> names = wrapper.getFileParameterNames();
while(names.hasMoreElements())
{
fileName=(String)names.nextElement();
System.out.println(fileName);
}
File []files = wrapper.getFiles(fileName);
for(int i=0; i<files.length;i++)
{
System.out.println(files[i].getName());
if(uploadFile(files[i],imgPath+"/",fileName)!=ERROR){
User user = userService.getUserInfoById(userId);
if(user!=null){
user.setUserId(userId);
user.setUserPhoto(imgPath+"\\"+fileName);
}
Result result = userService.updateUser(user);
if(result.flag) {
returnDomain.setResultMsg(result.msg);
returnDomain.setStatus("0");
System.out.println("用户修改头像结果:"+result.msg);
} else {
returnDomain.setResultMsg(result.msg);
returnDomain.setStatus("-1");
System.out.println("用户修改头像结果:"+result.msg);
}
}
}
return SUCCESS;
}
private String uploadFile(File file,String savePath,String saveName){
FileOutputStream fos = null;
FileInputStream fis = null;
File saveFile = null;
try{
saveFile = new File(savePath);
if(!saveFile.exists() && !saveFile.isDirectory()){
saveFile.mkdir();
}
saveFile = new File(savePath,saveName);
if(!saveFile.exists())
saveFile.createNewFile();
fos = new FileOutputStream(saveFile.getAbsolutePath());
fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len = 0;
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
}catch(Exception e){
System.out.println("文件上传失败!");
e.printStackTrace();
return ERROR;
}finally{
try {
if(fos!=null)
fos.close();
if(fis!=null)
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return saveFile.getAbsolutePath();
}
public void upload3(HttpServletRequest request) {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
if(item.isFormField()){
}else{
//item.write(new File(""));
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
将request重新转换成MultiPartRequestWrapper 如下
public String updateUserPhoto(){
String userId = request.getParameter("mobile");
String fileName = null;
ServletContext context = request.getSession().getServletContext();
String temp = context.getRealPath("/")+"temp";
System.out.println("temp="+temp);
String imgPath = context.getRealPath("/")+"image";
System.out.println("imgPath is "+imgPath);
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
request = (HttpServletRequest)wrapper.getRequest();
Enumeration<String> names = wrapper.getFileParameterNames();
while(names.hasMoreElements())
{
fileName=(String)names.nextElement();
System.out.println(fileName);
}
File []files = wrapper.getFiles(fileName);
for(int i=0; i<files.length;i++)
{
System.out.println(files[i].getName());
if(uploadFile(files[i],imgPath+"/",fileName)!=ERROR){
User user = userService.getUserInfoById(userId);
if(user!=null){
user.setUserId(userId);
user.setUserPhoto(imgPath+"\\"+fileName);
}
Result result = userService.updateUser(user);
if(result.flag) {
returnDomain.setResultMsg(result.msg);
returnDomain.setStatus("0");
System.out.println("用户修改头像结果:"+result.msg);
} else {
returnDomain.setResultMsg(result.msg);
returnDomain.setStatus("-1");
System.out.println("用户修改头像结果:"+result.msg);
}
}
}
return SUCCESS;
}
private String uploadFile(File file,String savePath,String saveName){
FileOutputStream fos = null;
FileInputStream fis = null;
File saveFile = null;
try{
saveFile = new File(savePath);
if(!saveFile.exists() && !saveFile.isDirectory()){
saveFile.mkdir();
}
saveFile = new File(savePath,saveName);
if(!saveFile.exists())
saveFile.createNewFile();
fos = new FileOutputStream(saveFile.getAbsolutePath());
fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len = 0;
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
}catch(Exception e){
System.out.println("文件上传失败!");
e.printStackTrace();
return ERROR;
}finally{
try {
if(fos!=null)
fos.close();
if(fis!=null)
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return saveFile.getAbsolutePath();
}
相关文章推荐
- Spring JDBC保存枚举对象含关键字报错原因之一
- Spring框架
- 【慕课笔记】第七章 方法 第3节 JAVA中无参带返回值方法的使用
- 【慕课笔记】第七章 方法 第2节 JAVA中无参无返回值方法的使用
- Struts2学习笔记(3)之国际化
- Struts2学习笔记(2)之Result
- java变量与数据类型
- 【慕课笔记】第七章 方法 第1节 如何定义JAVA中的方法
- Struts2学习笔记(1)之Action
- 17、反射和正则表达式
- 【慕课笔记】第六章 数组 第6节 JAVA中的二维数组
- jdk安装与环境变量配置
- Spring 中 Xml配置文件属性的说明
- mac myEclipse 更改jre版本
- SpringMVC+Mybatis框架整合源码 项目
- struts常用标签(包括特殊的表单标签)使用
- 【慕课笔记】第六章 数组 第4节 使用Arrays类操作JAVA中的数组
- kafka发送消息出现的问题KafKa error java.nio.channels.UnresolvedAddressException
- SpringMVC学习笔记(2)之与Mybatis整合篇
- Java日志工具:Log4J, JCL, SLF4J