java文件上传

3 篇文章 0 订阅

前台页面部分,这是我做的前端部分的一部分,用以实现文件上传,任何文件都可以添加上传,对应上传文件是否为图片,在后台部分判断。上传其他文件也可以使用本方法,只要改动后台的文件类型判断就行。

注:data-image=""用于展示要上传的图片

 

<form method="post" class="form-x" action="/solve/add" enctype="multipart/form-data"
    <label>图片:</label>
    <input type="file" name="img" style="width:25%; float:left;"  value=""  data-toggle="hover" data-place="right" data-image="" />
 <button  type="submit"> 提交</button>
</form>

后端接口部分,回调用我定义的图片上传类

 

ImgUpload iu=new ImgUpload();

 

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(Model model, MultipartFile img, HttpServletRequest request){
    SolveBean sb=new SolveBean();
    path=request.getSession().getServletContext().getRealPath("/upload/solveImg/");//获取服务路径
    String imgPath=iu.ImgPath(img,path);
    if(imgPath!=null){
        //准备将图片存储路径存入数据库,方便调用
        sb.setImgpath(imgPath);
        model.addAttribute("imgUpd","<script language='javascript'> alert('图片上传成功");
    }else {
        model.addAttribute("imgUpd","<script language='javascript'> alert('图片上传失败,上传图片必须为jpg,gif,png,ico,swf格式!')</script>");
    }
    int i=solveService.insertSelective(sb);
    if(i==1){
        model.addAttribute("ComeOut","<script language='javascript'> alert('添加成功')</script>");
    }else {
        model.addAttribute("ComeOut","<script language='javascript'> alert('添加失败')</script>");
    }
    return "admin/solve";
}

上传功能实现 ImgUpload类

我为了代码重复调用分成了好几个方法

 

private String filePath=null;

private String downNa;

private String imgName;

public String getImgName() {
    return imgName;
}

public void setImgName(String imgName) {
    this.imgName = imgName;
}

public String getDownNa() {
    return downNa;
}

public void setDownNa(String downNa) {
    this.downNa = downNa;
}

public String getFilePath() {
    return filePath;
}

public void setFilePath(String filePath) {
    this.filePath = filePath;
}

 

 

 

/**
 * 图片开始上传
 * @param file
 * @param path
 * @return
 */
public String ImgPath(MultipartFile file, String path){
    String filePath1;
    if(!file.isEmpty()){
        //调用图片上传方法
        filePath1=ImgLoad(file,path);
        return filePath1;
    }else {
        return null;
    }
}
/**
 * 判断文件类型
 * @param path
 * @return
 */
public String ImgLoad(MultipartFile img, String path){
    //图片名称
    String ImgName=img.getOriginalFilename();
    imgName=ImgName;
    //保存的图片名称
    int nameImg=ImgName.lastIndexOf(".");
    String suffix=ImgName.substring(nameImg);
    //判断是否为要求图片格式
    if(suffix.toLowerCase().equals(".gif")||suffix.toLowerCase().equals(".jpg")||suffix.toLowerCase().equals(".png")||suffix.toLowerCase().equals(".ico")||
            suffix.toLowerCase().equals(".swf")) {
        keep(suffix,path,img);
        return filePath;
    }else {
        return null;
    }
}
这里替换字符串指定字符,也可以用
replaceAll()替换字符
    /**
     * 上传文件存入指定位置
     * @param suffix
     * @param path
     * @param fi
     */
    public void keep(String suffix, String path, MultipartFile fi){
        String NewVidName = UUID.randomUUID() + suffix;
        downNa=NewVidName;
        filePath = path + NewVidName;
        //文件上传位置
        File file = new File(filePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        try {
            fi.transferTo(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //将路径中的\转换为/为了在网页上展示
        char[] ch=filePath.toCharArray();
        int x=0;
        for(int i=ch.length-1;i>=0;i--){
            if(ch[i]=='\\'){
                ch[i]='/';
                x++;
                if(x==3){
                    x=i;
                    break;
                }
            }
        }
        filePath="";
        for(int i=0;i<ch.length;i++){
            filePath+=String.valueOf(ch[i]);
        }
        filePath="../../.."+filePath.substring(x);
    }

实体类部分,和其他的就不展示了

这样图片上传到服务器的功能就是想了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值