如果觉得写得可以 或者太差 就 评论一下或者赞一下呗,多谢支持!!
1.需要的jar
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
2.为了控制上传文件的大小,需要在 ApplicationContext.xml中加上
<!-- 指定所上传文件的总大小不能超过10M。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 指定所上传文件的总大小不能超过10M 10485760 =10M 这里的单位是字节 注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="10485760" /> <property name="maxInMemorySize" value="4096" /> <property name="defaultEncoding" value="UTF-8"/> </bean>
3.jsp页面代码
<form name="serForm" action="fileUpload.do" method="post" enctype="multipart/form-data"> <h1>采用流的方式上传文件</h1> <input type="file" name="file"> <input type="submit" value="upload"/> </form> <form name="Form2" action="fileUpload2.do" method="post" enctype="multipart/form-data"> <h1>采用multipart提供的file.transfer方法上传文件</h1> <input type="file" name="file"> <input type="submit" value="upload"/> </form> <form name="Form2" action="springUpload.do" method="post" enctype="multipart/form-data"> <h1>使用spring mvc提供的类的方法上传文件</h1> <input type="file" name="file"> <input type="submit" value="upload"/> </form>
4.spring 的controller 代码
import org.apache.commons.io.FileUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.util.Date; import java.util.Iterator; import java.util.List; /** * Created by Administrator on 2017/9/14/014. */ @Controller public class Test01 { @RequestMapping(value = "fileUpload",method = RequestMethod.POST) public String fileUpload( @RequestParam("file") CommonsMultipartFile file ) throws IOException { String path =""; try { //获取输出流 RequestAttributes ra = RequestContextHolder.getRequestAttributes(); HttpServletRequest request = ((ServletRequestAttributes)ra).getRequest(); path = request.getSession().getServletContext().getRealPath("upload"); System.out.println(path); if(!new File(path).exists()){ new File(path).mkdirs(); } path = path+"/"+new Date().getTime()+file.getOriginalFilename(); OutputStream os=new FileOutputStream(path); InputStream is=file.getInputStream(); int temp; //一个一个字节的读取并写入 while((temp=is.read())!=(-1)) { os.write(temp); } os.flush(); os.close(); is.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } File tempFile=new File(path); //解析文件 List<String> lines= FileUtils.readLines(tempFile,"utf-8"); for(String line: lines){ System.out.println(line); } tempFile.delete(); return "success"; } @RequestMapping(value = "fileUpload2",method = RequestMethod.POST) public String fileUpload2( @RequestParam("file") CommonsMultipartFile file ) throws IOException { String path = ""; RequestAttributes ra = RequestContextHolder.getRequestAttributes(); HttpServletRequest request = ((ServletRequestAttributes)ra).getRequest(); path = request.getSession().getServletContext().getRealPath("upload"); System.out.println(path); if(!new File(path).exists()){ new File(path).mkdirs(); } path = path+"/"+new Date().getTime()+file.getOriginalFilename(); File newFile=new File(path); //通过CommonsMultipartFile的方法直接写文件(注意这个时候) file.transferTo(newFile); //解析文件 List<String> lines= FileUtils.readLines(newFile,"utf-8"); for(String line: lines){ System.out.println(line); } newFile.delete(); return "/success"; } @RequestMapping(value = "springUpload",method = RequestMethod.POST) public String springUpload( HttpServletRequest request ) throws IllegalStateException, IOException { CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(request.getSession().getServletContext()); String path=""; if(multipartResolver.isMultipart(request)) { //将request变成多部分request MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request; //获取multiRequest 中所有的文件名 Iterator iter=multiRequest.getFileNames(); while(iter.hasNext()) { //一次遍历所有文件 MultipartFile file=multiRequest.getFile(iter.next().toString()); if(file!=null) { path=path = request.getSession().getServletContext().getRealPath("upload")+"/"+file.getOriginalFilename(); //上传 file.transferTo(new File(path)); } } } File tempFile=new File(path); //解析文件 List<String> lines= FileUtils.readLines(tempFile,"utf-8"); for(String line: lines){ System.out.println(line); } tempFile.delete(); return "/success"; } }