JAVA文件上传是我们网络操作经常使用的一个功能,但因代码较多,每个上传都重复写, 会显得非常麻烦,所以这里形成一个类,方便我们重复使用
一. Java源生上传文件
package utils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import java.io.File;
import java.util.Properties;
import java.util.UUID;
public class UploadFile {
//返回上传文件的名字
public static String getFileName(HttpServletRequest request,String filedName){
//得到上传文件开始
String pic = "";
try{
Part file = request.getPart(filedName);
String fileName = file.getSubmittedFileName();
String ext = fileName.substring(fileName.lastIndexOf("."));
// String filePath = request.getServletContext().getRealPath("/")+"upload";
//从配置文件读取目录
Properties props = PropertiesGet.getResult("/config.properties");
String filePath = props.getProperty("uploads");
File uploadDir = new File(filePath);
if(!uploadDir.exists()){
uploadDir.mkdirs();
}
pic = UUID.randomUUID().toString() + ext; //上传文件后的文件名
String fileUploadPath = uploadDir + File.separator + pic;
file.write(fileUploadPath);
}
catch (Exception e){
System.out.println(e.getMessage());
}
return pic;
}
}调用方法如下:
String pic = UploadFile.getFileName(request,"pic");
源代码下载:
二. SpringMVC上传类
1. 需要将 commons-fileupload 组件相关的 JAR(commons-fileupload-1.3.1.jar 和 commons-io-2.4.jar)复制到 Spring MVC 应用的 WEB-INF/lib 目录下
2. Springmvc-servlet.xml里面做配置
<!-- 配置MultipartResolver,用于上传文件,使用spring的CommonsMultipartResolver -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
package tool;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import java.util.UUID;
public class UploadFile {
public static String getFileName(MultipartFile file){
if(!file.isEmpty()){
String fileName = file.getOriginalFilename();
String ext = fileName.substring(fileName.lastIndexOf("."));
String pic = UUID.randomUUID().toString() + ext;
try {
Properties prop = GetProperties.getResult("/config.properties");
String upload = prop.getProperty("upload");
File targetFile = new File(upload, pic);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
try {
file.transferTo(targetFile);
return pic;
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
}