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;
}
}