如果觉得写得可以 或者太差 就 评论一下或者赞一下呗,多谢支持!!
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";
}
}