SpringMVC文件上傳

SpringMVC文件上傳

1.pom.xml導入jar
	<!-- 本地文件上傳 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.6</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>1.4</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>

		<!-- 跨服務器上傳 -->
		<dependency>
			<groupId>com.sun.jersey</groupId>
			<artifactId>jersey-server</artifactId>
			<version>1.10</version>
		</dependency>
		<dependency>
			<groupId>com.sun.jersey</groupId>
			<artifactId>jersey-client</artifactId>
			<version>1.10</version>
		</dependency>
		<dependency>
			<groupId>com.sun.jersey</groupId>
			<artifactId>jersey-core</artifactId>
			<version>1.10</version>
		</dependency>
2.springContext.xml配置CommonsMultipartResolver
<!-- 文件上傳配置 -->
	<bean id="multipartResolver"
	class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 上傳文件的編碼 -->
		<property name="defaultEncoding" value="UTF-8" />
		<!--上傳文件的最大大小,單位爲字節 -->
		<property name="maxUploadSize" value="10000000" />
	</bean>
3.前端jsp頁面
  • input的type設置爲file
  • form表單的method設爲post
  • form表單的enctype設置爲multipart/form-data,序列化以二進制的形式傳輸數據
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
	<h2>Hello World!</h2>
	<form action="fileload.do" method="post" enctype="multipart/form-data">
		<input type="file" name="upload" /> 
		<input type="submit" value="上傳" />
	</form>
	<br> ${msg}
</body>
</html>
4.Handler接收處理
	//本地上傳
	@RequestMapping("/fileload")
	public String fileUpLoad(HttpServletRequest request, MultipartFile upload) throws Exception {
		// TODO Auto-generated method stub
		//設置本地上傳後的存儲路徑
		String path = "D://upload";
		
		//如果文件目錄不存在,創建目錄
		File f = new File(path);
		if (!f.exists()) {
			f.mkdir();
		}
		
		//獲取文件名
		String filename = upload.getOriginalFilename();
		
		//爲確保文件名不會相同,使用UUID進行拼接
		String uuid = UUID.randomUUID().toString().replace("-", "");
		
		//最終文件名
		String name = uuid + "_" + filename.substring(filename.lastIndexOf(File.separator) + 1);
		
		//爲了避免上傳病毒惡意攻擊,可以判斷上傳文件類型
		if (name.endsWith(".jpg")||name.endsWith(".png")) {
			//寫入文件
			upload.transferTo(new File(path, name));
			request.setAttribute("msg", "上傳成功");
			return "forward:index.jsp";
		}else {
			request.setAttribute("msg", "上傳失敗");
			return "forward:index.jsp";
		}
	}


	// 跨服務器上傳
	 @RequestMapping("/fileloadtest")
	public String fileUpLoad01(HttpServletRequest request, MultipartFile upload) throws Exception {
		// TODO Auto-generated method stub

		// 定義上傳文件服務器路徑
		String path = "http://localhost:8888/uploads/";
		//拼接文件名
		String filename = upload.getOriginalFilename();
		String uuid = UUID.randomUUID().toString().replace("-", "");
		String name = uuid + "_" + filename.substring(filename.lastIndexOf(File.separator) + 1);

		// 創建客戶端的對象
		Client client = Client.create();

		// 和圖片服務器進行連接
		WebResource webResource = client.resource(path + filename);

		// 上傳文件
		webResource.put(upload.getBytes());

		return "success";
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章