springmvc中上傳分析
阿新 • • 發佈:2019-05-31
今天說下SpringMVC的上傳
首先要匯入應該有依賴(或者jar包)
在maven中匯入的依賴則看上去簡易很多
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.16.RELEASE</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> </dependencies>
匯入jar包或者依賴後,就可以開始寫個上傳的表單了
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
</form>
注意 這裡的請求方法必須是post請求
也必須寫上enctype=“multipart/form-data”,這表示上傳的將會是二進位制流的格式,以規定的二進位制進行上傳
只有設定成這個上傳格式,才能上傳成功
然後需要寫個springmvc的配置檔案
<!-- 開啟掃描 --> <context:component-scan base-package="com.liy.controller" /> <!-- 開啟mvc註解 --> <mvc:annotation-driven /> <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver" > <!-- 設定上傳檔案資訊引數 --> <!-- 設定檔案上傳的最大尺寸 --> <property name="maxUploadSize"> <value>5242880</value> </property> </bean> <!-- 配置檔案的允許訪問靜態資源 --> <mvc:resources location="/**" mapping="/" />
這裡CommonsMultipartResolver 類的id必須為“multipartResolver“
這個bean的id是固定的,當DispatcherServlet查詢multipart解析器時,會查詢id為multipartResolver的Bean。若定義的bean 的id 不是multipartResolver,DispatcherServlet會對它進行忽略。
@SuppressWarnings("serial")
public class DispatcherServlet extends FrameworkServlet {
/** Well-known name for the MultipartResolver object in the bean factory for this namespace. */
public static final String MULTIPART_RESOLVER_BEAN_NAME = "multipartResolver";
controller在接收處理下
@RequestMapping("/upload")
@ResponseBody
public void upload(String name,String address,MultipartFile file) throws IllegalStateException, IOException{
System.out.println(name+"--"+address+"--"+file.getOriginalFilename());
file.transferTo(new File("d:/img/imgs/"+file.getOriginalFilename()));
}
這裡的MultiparFile引數的名字必須和
<input type="file" name="file" />
這裡的name一致