package org.xw.util;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
public class FileUploadUitl {
//页面控件的文件流
MultipartFile multipartFile=null;
//得到页面上传重命名后的名称
public String getFileName(String files,HttpServletRequest request){
MultipartHttpServletRequest mulreq=(MultipartHttpServletRequest) request;
//得到前台文件
multipartFile=mulreq.getFile(files);
if(multipartFile == null || multipartFile.getSize() == 0){
return "";
}
//获取文件的后缀
String suffix=multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
//使用UUID生成文件名称
SimpleDateFormat dateformat=new SimpleDateFormat("yyyyMMddHHmmssSSS");
String upName=dateformat.format(new Date())+UUID.randomUUID().toString()+suffix;
return upName;
}
//上传
public boolean FileUpload(String files,String folder,String upName,String oldName,HttpServletRequest request){
MultipartHttpServletRequest mulreq=(MultipartHttpServletRequest) request;
multipartFile=mulreq.getFile(files);
if(upName==""){
return false;
}
//构建图片保存的目录
String logoPathDir=folder;
//得到图片保存的真实路径
String logoRealDir=request.getSession().getServletContext().getRealPath(logoPathDir);
//拼成完整的文件保存路径加文件
String fileName=logoRealDir+File.separator+upName;
File file=new File(fileName);
try {
multipartFile.transferTo(file);
} catch (Exception e) {
e.printStackTrace();
return false;
}
//删除旧图片
if(oldName != null && !oldName.equals("fengmian.jpg")){
String delName=logoRealDir+File.separator+oldName;
file=new File(delName);
file.delete();
}
return true;
}
//需要传参数(相对路径,文件名称)
public boolean FileDelete(String folder,String delfileName,HttpServletRequest request){
String logoRealDir=request.getSession().getServletContext().getRealPath(folder);
String fileName=logoRealDir+File.separator+delfileName;
if(fileName != null && !fileName.equals("")){
File file = new File(fileName);
file.delete();
}
return true;
}
}
action里的方法
public String upload(){
FileUploadUitl fileUtil=new FileUploadUitl();
//得到重命名
String idcardFront=fileUtil.getFileName("file1",null);
try {
//上传
fileUtil.FileUpload("file1","uploadImag", idcardFront,null,null);
} catch (Exception e) {
e.printStackTrace();
}
return "showimg";
}
jsp页面
<form action="goodsupload" method="post" name="form1" enctype="multipart/form-data" >
<input type="file" id="file1" name="file1" />
<input type="submit" value="提交" />
</form>运行不报错,点击提交报错
文件上传,,又怎么麻烦吗????struts2的文件上传,,可以不???如果可以去我的博客里看看。。。希望可以帮到你
空指针异常?
是啊,得不到文件
这个能找到是哪一行代码的错误吧
java.lang.NullPointerException org.xw.util.FileUploadUitl.getFileName(FileUploadUitl.java:23) org.xw.action.GoodsAction.upload(GoodsAction.java:56) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
这不,不会改
23行 multipartFile=mulreq.getFile(files);
56行 String idcardFront=fileUtil.getFileName("file1",null);
null不知道写什么
@雪夜舞者J: getFileName(String files,HttpServletRequest request) 看方法参数 null要换成request
@feelgood: HttpServletRequest request = null;
//得到重命名
String idcardFront=fileUtil.getFileName("file1",request);
是这样么?
@雪夜舞者J: HttpServletRequest request = ServletActionContext.getRequest(); copy的 具体我忘了 怎么在action获取request随便搜搜就能找到