commons-fileload图片文件上传工具 , servlet文件图片上传案列

本案列是java  maven工程小项目,提供个大家学习!

1.在pom.xml文件中导入依赖:

<!--文件上传依赖-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>

<!--String社区 jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>

1. 编写图片上传工具,ApachFileUploadUtil :import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

/**
* 文件上传,批量上传文件工具
* @author: boat
*/
public class ApachFileUploadUtil {
private static DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();

/**
* 上传功能
* @param request
* @param filePath
* @return 路径集合
*/
public static List<String> fileUpload(HttpServletRequest request,String filePath){
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
List<String> list = new ArrayList<>();
try {
List<FileItem> fileItems = servletFileUpload.parseRequest(request);
for (FileItem item : fileItems){
String fieldName = item.getFieldName();
if(!item.isFormField()){ //判断是否是文件项
//获取原文件名
String name = item.getName();

InputStream in = item.getInputStream();

String path = getPath(filePath, name);
OutputStream out = new FileOutputStream(path);
byte[] b = new byte[1024];
int len = 0;
while((len = in.read(b)) != -1){
out.write(b,0,len);
}
out.close();
in.close();

//添加文件路径
list.add(path);
}
item.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}

/**
* 随机字符串
* @param fileName
* @return String
*/
public static String radomFileName(String fileName){
int index = fileName.lastIndexOf(".");
String suffix = fileName.substring(index);
String newfileName = UUID.randomUUID().toString().replace("-", "");
return (newfileName + suffix);
}

/**
* 随机文件路径
* @return String
*/
public static String radomFilePath(){
String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
return format.replace("-","");
}

/**
* 返回指定的文件路径
* @param path
* @param fileName
* @return String
*/
public static String getPath(String path,String fileName){

String newPath = path + "\"+ radomFilePath();
File photoFileDir = new File(newPath);

if(!photoFileDir.exists()){ // 如果路径不存在,就创建路径
photoFileDir.mkdirs();
}

return (newPath + "\" + radomFileName(fileName));
}

}


2.在servlet类中service调用图片上传工具类:

import com.boat.utils.ApachFileUploadUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/file")
public class FileUploadServlet extends HttpServlet {

@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html; charset=utf-8");
ServletContext servletContext = req.getServletContext();
String realPath = servletContext.getRealPath("/img");

List<String> strings = ApachFileUploadUtil.fileUpload(req, realPath);
String json = new ObjectMapper().writeValueAsString(strings);

resp.getWriter().println("{status:1,data:"+json+",message:'上传成功'}");
}

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}

}

点击下载:https://pan.baidu.com/s/1rzZoJlbMmUskOW6PsaGCzg 密码:lc2e

加QQ: 425759592 欢迎交流。

原文地址:https://www.cnblogs.com/M87-A/p/12861110.html