首页 新闻 会员 周边 捐助

SSH文件上传java.lang.NullPointerException

0
悬赏园豆:30 [已解决问题] 解决于 2015-07-10 10:09

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>运行不报错,点击提交报错

 

雪夜舞者J的主页 雪夜舞者J | 初学一级 | 园豆:45
提问于:2015-07-09 15:47
< >
分享
最佳答案
1

文件上传,,又怎么麻烦吗????struts2的文件上传,,可以不???如果可以去我的博客里看看。。。希望可以帮到你

收获园豆:30
Vip灬cnblog | 初学一级 |园豆:133 | 2015-07-09 16:42
其他回答(2)
1

空指针异常?

顾晓北 | 园豆:10898 (专家六级) | 2015-07-09 16:11

是啊,得不到文件

支持(0) 反对(0) 雪夜舞者J | 园豆:45 (初学一级) | 2015-07-09 16:15
1

这个能找到是哪一行代码的错误吧

【戈多】 | 园豆:282 (菜鸟二级) | 2015-07-09 16:16

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不知道写什么

支持(0) 反对(0) 雪夜舞者J | 园豆:45 (初学一级) | 2015-07-09 16:19

@雪夜舞者J:  getFileName(String files,HttpServletRequest request) 看方法参数 null要换成request

支持(0) 反对(0) 【戈多】 | 园豆:282 (菜鸟二级) | 2015-07-09 16:24

@feelgood: HttpServletRequest request = null;
        //得到重命名
        String idcardFront=fileUtil.getFileName("file1",request);
        是这样么?

支持(0) 反对(0) 雪夜舞者J | 园豆:45 (初学一级) | 2015-07-09 16:29

@雪夜舞者J:  HttpServletRequest request = ServletActionContext.getRequest(); copy的 具体我忘了 怎么在action获取request随便搜搜就能找到 

支持(0) 反对(0) 【戈多】 | 园豆:282 (菜鸟二级) | 2015-07-09 16:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册