文件上传

文件上传

为什么要文件上传?

就不说了

文件从哪里上传到哪里?

从客户端到应用服务端,保存到哪里要看存储策略:小网站:工程目录;大网站:分布存储

技术实现

核心包:filupload.jar包

步骤

  1. 导包:commons-fileupload.jar,commons-io.jar
  2. form表单注意:,enctype=”multipart/form-data”
  3. 方法编写
1
2
import java.io.File;
3
import java.io.IOException;
4
import java.util.UUID;
5
6
import javax.servlet.http.HttpServletRequest;
7
8
import org.springframework.stereotype.Controller;
9
import org.springframework.web.bind.annotation.RequestMapping;
10
import org.springframework.web.multipart.MultipartFile;
11
import org.springframework.web.servlet.ModelAndView;
12
13
@Controller
14
public class FileController {
15
	
16
	//springMVC参数绑定功能异常强大,那么能不能帮我们绑定文件对象呢?能
17
	@RequestMapping("upload.do")
18
	public ModelAndView upload(MultipartFile photo,HttpServletRequest request) throws IllegalStateException, IOException
19
	{
20
		ModelAndView mav=new ModelAndView();
21
		//进行文件的上传
22
		//1.进行非空判断
23
		if(photo.isEmpty())
24
		{
25
			mav.addObject("message", "请选择文件");
26
			mav.setViewName("upload");
27
			return mav;
28
		}
29
		//2.获取文件名字,希望上传同名字的文件,不会覆盖原有文件,那么怎么做呢?
30
		String code=UUID.randomUUID().toString().replaceAll("-", "");//意思是把生成的uuid字符串中的-去掉
31
		System.out.println("code:"+code);
32
		String oldName=photo.getOriginalFilename();//获取客户端上传的文件的原始名字:如  a.txt
33
		System.out.println("oldName:"+oldName);
34
		String fileNewName=code+oldName.substring(oldName.indexOf("."));// a.txt
35
		System.out.println("fileNewName:"+fileNewName);
36
		//3.获取文件的存储路径,把文件保存在tomcat的wepapps下的当前工程目录底下
37
		String path=request.getServletContext().getRealPath("/photos");
38
		System.out.println("path:"+path);//服务器端的绝对路径
39
		File file=new File(path,fileNewName);
40
		if(!file.getParentFile().exists())//如果这个目录不存在
41
		{
42
			file.getParentFile().mkdirs();
43
			System.out.println("创建目录:"+file);
44
		}
45
		
46
		
47
		//4.写入文件
48
		photo.transferTo(file);
49
		
50
		mav.addObject("message", "文件上传成功!");
51
		mav.addObject("imagePath", "photos/"+fileNewName);
52
		mav.setViewName("upload");
53
		
54
		return mav;
55
	}
56
57
}
  1. 配置文件上传解析器
1
<bean id="multipartResolver"
2
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
3
    <!--上传文件的最大大小,单位为字节 --> 
4
    <property name="maxUploadSize" value="17367648787"></property>
5
     
6
    <!-- 上传文件的编码 -->
7
    <property name="defaultEncoding" value="UTF-8"></property>
8
</bean>