SpringMVC 單文件,多文件上傳實(shí)現(xiàn)詳解
需要用到的流的相關(guān)知識(shí):http://www.dhdzp.com/article/170640.htm
SpringMVC中寫(xiě)好了文件上傳的類(lèi)。
要使用文件上傳,首先需要文件上傳相關(guān)的Jar包。commons-fileupload.jar 和 commons-io.jar。
添加到pom.xml或lib文件夾下。
pom.xml:
<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.4</version>
</dependency>
在SprigMVC的配置文件中添加bean(id和class都是固定寫(xiě)法):
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="104857600"></property>
</bean>
前端寫(xiě)一個(gè)單文件上傳的表單,一個(gè)多文件上傳的表單(多文件上傳的表單中,多個(gè)文件輸入input中的name相同):
<form action="handler/testUpload" method="post" enctype="multipart/form-data"> 文件描述: <input type="text" name="desc" id="desc"> <br> 請(qǐng)選擇文件: <input type="file" name="file"><br> <input type="submit" value="上傳文件"> </form> <br> <br> <form action="handler/testMutiUpload" method="post" enctype="multipart/form-data"> 文件描述: <input type="text" name="desc"> <br> 請(qǐng)選擇文件: <input type="file" name="file"><br> 請(qǐng)選擇文件1: <input type="file" name="file"><br> 請(qǐng)選擇文件2: <input type="file" name="file"><br> <input type="submit" value="上傳文件"> </form>
文件上傳中,參數(shù)要使用MultipartFile而不是File類(lèi),不能使用FileUtils.copyFile()來(lái)復(fù)制文件,因此使用流來(lái)輸出到磁盤(pán)
單文件多文件只是將單文件中傳遞來(lái)的file參數(shù)改為數(shù)組形式,將方法內(nèi)的file有關(guān)的操作都變?yōu)閿?shù)組即可。
單文件上傳
也可以不使用流,下面這句看到有人使用,但是沒(méi)有測(cè)試。
File dest = new File(filePath + fileName); file.transferTo(dest);
@RequestMapping("testUpload")
public String testUpload(@RequestParam("desc") String desc, @RequestParam("file") MultipartFile file) throws IOException {
System.out.println("文件描述:" + desc);
// 得到文件的輸入流
InputStream inputStream = file.getInputStream();
// 得到文件的完整名字 img.png/hh.docx
String fileName = file.getOriginalFilename();
// 輸出流
OutputStream outputStream = new FileOutputStream("C:\\tmp\\" + fileName);
// 緩沖區(qū)
byte[] bs = new byte[1024];
int len = -1;
while ((len = inputStream.read(bs)) != -1) {
outputStream.write(bs,0,len);
}
inputStream.close();
outputStream.close();
return "success";
}
多文件上傳
@RequestMapping("testMutiUpload")
public String testMutiUpload(@RequestParam("desc") String desc, @RequestParam("file") MultipartFile[] files) throws IOException {
System.out.println("文件描述:" + desc);
for (MultipartFile file :
files) {
InputStream inputStream = file.getInputStream();
String fileName = file.getOriginalFilename();
OutputStream outputStream = new FileOutputStream("C:\\tmp\\" + fileName);
byte[] bs = new byte[1024];
int len = -1;
while ((len = inputStream.read(bs)) != -1) {
outputStream.write(bs,0,len);
}
inputStream.close();
outputStream.close();
}
return "success";
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringMVC使用第三方組件實(shí)現(xiàn)文件上傳
- SpringMVC文件上傳原理及實(shí)現(xiàn)過(guò)程解析
- ssm框架Springmvc文件上傳實(shí)現(xiàn)代碼詳解
- Ajax實(shí)現(xiàn)文件上傳功能(Spring MVC)
- SpringMVC 上傳文件 MultipartFile 轉(zhuǎn)為 File的方法
- SpringMVC上傳文件并保存到本地代碼實(shí)例
- SpringMVC實(shí)現(xiàn)多文件上傳
- 利用SpringMVC和Ajax實(shí)現(xiàn)文件上傳功能
- Springmvc文件上傳實(shí)現(xiàn)流程解析
相關(guān)文章
IDEA的Mybatis Generator駝峰配置問(wèn)題
這篇文章主要介紹了IDEA的Mybatis Generator駝峰配置問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Java Swing組件下拉菜單控件JComboBox用法示例
這篇文章主要介紹了Java Swing組件下拉菜單控件JComboBox用法,結(jié)合具體實(shí)例形式分析了Swing組件下拉菜單控件JComboBox的具體定義、使用方法及相關(guān)使用注意事項(xiàng),需要的朋友可以參考下2017-11-11
idea 2023.1字體設(shè)置及自動(dòng)調(diào)整大小的圖文教程
這篇文章主要介紹了idea 2023.1字體設(shè)置及自動(dòng)調(diào)整大小的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
Android應(yīng)用開(kāi)發(fā)之將SQLite和APK一起打包的方法
這篇文章主要介紹了Android應(yīng)用開(kāi)發(fā)之將SQLite和APK一起打包的方法,文章時(shí)間較早,盡管現(xiàn)在開(kāi)發(fā)環(huán)境已大都遷移至Android Studio上,但打包原理依然相同,需要的朋友可以參考下2015-08-08
被kafka-client和springkafka版本坑到自閉及解決
這篇文章主要介紹了被kafka-client和springkafka版本坑到自閉及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot實(shí)現(xiàn)無(wú)感刷新Token的項(xiàng)目實(shí)踐
token刷新是前端安全中必要的一部分,本文就來(lái)介紹一下SpringBoot實(shí)現(xiàn)無(wú)感刷新Token的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
如何解決Spring事務(wù)注解@Transactional在類(lèi)內(nèi)部方法調(diào)用不生效
這篇文章主要介紹了如何解決Spring事務(wù)注解@Transactional在類(lèi)內(nèi)部方法調(diào)用不生效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Spring mvc結(jié)果跳轉(zhuǎn)方法詳解
這篇文章主要介紹了Spring mvc結(jié)果跳轉(zhuǎn)方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法
這篇文章主要介紹了Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法,詳細(xì)分析了基于Hibernate執(zhí)行批量添加操作的具體步驟與相關(guān)實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-03-03

