1. 程式人生 > >Java前端上傳圖片到後臺

Java前端上傳圖片到後臺

使用通用的SSM框架,maven構建;

簡單記錄一下前端檔案上傳到後臺的過程,免得到處找;

spring-mvc.xml加入配置,這裡還可以加入檔案的編碼格式defaultEncoding屬性配置;

<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="2000000" /><!-- 允許上傳的最大檔案大小 -->
		<property name="maxInMemorySize" value="4000000" /><!-- 允許寫到記憶體中的最大值 -->
	</bean>

此主要注意的是,記得在pom.xml檔案加入commons-fileupload的jar包依賴,SpringMVC實現檔案上傳依賴commons-fileupload.jar,否則執行時會報java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory 

<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>


**Controller.java程式碼加入mapping對映:
@RequestMapping(value = "/uploadFile")
	public JSONMessage uploadFile(MultipartFile file) throws Exception {
		if (file != null && file.getName() != null && !file.isEmpty()) {
			byte[] bytes = file.getBytes();
			//位元組流操作,寫入檔案等等
			return JSONMessage.success();
		} else {
			return JSONMessage.failure("上傳檔案為空!");
		}
	}

簡單說明下:JSONMessage是自己封裝的一個類,繼承自com.alibaba.fastjson.JSONObject,用於格式化返回介面資料;


注意這裡的key要與uploadFile(MultipartFile file)方法中的file變數命名一致;

多檔案上傳:

@RequestMapping(value = "/uploadFiles")
	public JSONMessage uploadFiles(@RequestParam("files") MultipartFile[] files) throws Exception {
		//判斷file陣列不能為空並且長度大於0  
        if(files!=null&&files.length>0){  
            //迴圈獲取file陣列中得檔案  
            for(int i = 0;i<files.length;i++){  
                MultipartFile file = files[i];  
                //儲存檔案
                System.out.println(file.getName()+":"+file.getSize());
            }  
        }  
        return JSONMessage.success();
	}