SpringMVC的文件上传

package com.ghgj.controller;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

@Controller
public class indexImgController {

@RequestMapping("/loader.action")
public void loader(HttpServletRequest request, HttpServletResponse response){


    //调用方法init()创建文件
    File file = init(request);
    try {
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //上传文件
        ServletFileUpload fileUpload = new ServletFileUpload(factory);
        fileUpload.setHeaderEncoding("utf-8");
        //获取页面表单提交的所有数据,存储在集合中
        List<FileItem> list= fileUpload.parseRequest(request);
        //进行判断,是获取数据还是上传文件
        for (FileItem fileItem:list) {
            if (fileItem.isFormField()) {
                String names = fileItem.getFieldName();
                String name = fileItem.getString("utf-8");
            } else {
                //当前文件我们需要上传
                String name = fileItem.getName();
                InputStream is = fileItem.getInputStream();
                //把文件读出后写到那个文件夹中的哪个文件
                OutputStream os = new FileOutputStream(file + "//" + name);
                //需要数组和长度这两个容器
                byte[] buff = new byte[1024];
                int len = 0;
                //把这个文件写到域对中,方便获取
                String url = "http://localhost:8080/SpringMVC01/img" + name;
                request.getSession().setAttribute("url", url);
                while ((len = is.read(buff)) != -1) {
                    os.write(buff, 0, len);
                }
                os.close();
                is.close();
            }
        }
       response.sendRedirect("showImg.action");
    }catch (Exception e){
        e.printStackTrace();
    }
}



@RequestMapping("/showImg.action")
public String showImg(){
    return  "indexImg2";
}


//跳转到表单的jsp页面
@RequestMapping("/showFile.action")
public String show(){
    return "indexImg";
}

public File init(HttpServletRequest request){
    String path = request.getServletContext().getRealPath("/img");
    File file=new File(path);
    //输出
    System.out.println(path);
    System.out.println(file.exists());
    System.out.println(file.isDirectory());
    //判断这个文件存不存在,不存在则创建
    if(! file.exists() && ! file.isDirectory()){
        file.mkdir();
        System.out.println("创建成功!!!");
    }
    return file;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值