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