SpringMVC:用MultipartFile上傳單個檔案,多個檔案
單個檔案上傳開發步驟:
1.新增Apache檔案上傳jar包
首先需要下載兩個apache上傳檔案的jar包
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
具體使用版本,請根據專案進行選擇。
2.配置MultipartResolver處理檔案
SpringMVC 用的是 的MultipartFile來進行檔案上傳 所以我們首先要配置MultipartResolver:用於處理表單中的file。
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="maxUploadSize" value="5400000" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
屬性介紹:
maxUploadSize:最大上傳檔案的大小,單位為位元組;
defaultEncoding:請求的編碼格式,預設為iso-8859-1。
3.編寫檔案上傳控制器
@Controller
public class FileUploadController {
private static String UPLOAD_DIRECTORY = PropertiesUtil.get("fileupload.directory", "");
@RequestMapping(value = "uploadFile", method = RequestMethod.POST)
public ModelAndView uploadFile(@RequestParam("file") MultipartFile file){
// 判斷檔案是否為空
if (!file.isEmpty()) {
try {
//判斷檔案目錄是否存在,否則自動生成
File directory = new File(UPLOAD_DIRECTORY);
if (!directory.exists()){
directory.mkdirs();
}
//失敗跳轉檢視
if (file.getSize() > 30000)
return new ModelAndView("uploadFail","msg",file.getOriginalFilename()+"超過了指定大小");
// 檔案儲存路徑
String filePath = FilenameUtils.concat(UPLOAD_DIRECTORY, file.getOriginalFilename());
// 轉存檔案
file.transferTo(new File(filePath));
} catch (Exception e) {
e.printStackTrace();
}
}
//成功跳轉檢視
return new ModelAndView("uploadSuccess","msg",file.getOriginalFilename());
}
}
說明:
1>使用SpringMVC註解@RequestParam來獲取表單中的file引數內容;
2>通過MultipartFile的transferTo(File dest)這個方法來直接轉存檔案到指定的路徑。
4.書寫前段測試表單
upload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Upload File</title>
</head>
<body>
<h2>檔案上傳例項</h2>
<form action="/uploadFile" method="post" enctype="multipart/form-data">
選擇檔案:<input type="file" name="file">
<input type="submit" value="提交">
</form>
</body>
</html>
uploadSuccess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>檔案上傳成功</title>
</head>
<body>
<h1>檔案${msg}上傳成功!</h1>
</body>
</html>
uploadFail.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>檔案上傳失敗</title>
</head>
<body>
<h1>上傳失敗原因:${msg}</h1>
</body>
</html>
注意要在form標籤中加上enctype=”multipart/form-data”表示該表單是要處理檔案的,這是最基本的東西,很多人會忘記然而當上傳出錯後則去找程式的錯誤,卻忘了這一點
5.執行單個檔案上傳結果
成功:
失敗:
多個檔案上傳開發步驟:
步驟1,2都是相同的,只是步驟3,4有些許不同。
3.1多個檔案上傳控制器
/**
* 多個檔案上傳
* @param files
* @return
*/
@RequestMapping(value = "uploadFiles", method = RequestMethod.POST)
public ModelAndView uploadFile(@RequestParam("files") MultipartFile[] files){
//判斷file陣列不能為空並且長度大於0
if (files != null && files.length > 0) {
//迴圈獲取file陣列中得檔案
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
//儲存檔案
String filePath = FilenameUtils.concat(UPLOAD_DIRECTORY, file.getOriginalFilename());
// 轉存檔案
try {
file.transferTo(new File(filePath));
} catch (IOException e) {
e.printStackTrace();
}
}
}
//跳轉檢視
return new ModelAndView("uploadSuccess","msg",files.length+"個檔案");
}
4.1多個檔案上傳表單
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Upload File</title>
</head>
<body>
<h2>多個檔案上傳例項</h2>
<form action="/uploadFiles" method="post" enctype="multipart/form-data">
<p> 選擇檔案:<input type="file" name="files">
<p> 選擇檔案:<input type="file" name="files">
<p> 選擇檔案:<input type="file" name="files">
<input type="submit" value="提交">
</form>
</body>
</html>
說明:
前端表單,多個檔案組使用同一個name名稱:files,後臺控制器使用@RequestParam(“files”) MultipartFile[] files 陣列來接收。
5.1執行多個檔案上傳結果
上傳:
結果:
擴充:
1>MultipartFile常用方法
列印方法結果:
1>檔案型別值,MultipartFile.getContentType():image/jpeg
2>表單中檔案元件對應name值,MultipartFile.getName():file
3>檔案原始名稱包括字尾名,MultipartFile.getOriginalFilename():IMEI_20171204.jpg
4>檔案大小單位為k,MultipartFile.getSize():27128
5>檔案是否為空,MultipartFile.isEmpty():false
2>Apache檔案相關jar包常用方法
1>FilenameUtils.concat(basePath, fullFileName):用於拼接目錄和檔名為檔案全路徑,且會根據系統對應使用相應的分隔符
2>FileUtils.copyURLToFile(URL source, File destination, int connectionTimeout, int readTimeout):
從指定的url下載檔案,儲存到destination為準;同時指定連線超時時長,讀取檔案超時時長。
相關推薦
SpringMVC:用MultipartFile上傳單個檔案,多個檔案
單個檔案上傳開發步驟: 1.新增Apache檔案上傳jar包 首先需要下載兩個apache上傳檔案的jar包 commons-fileupload-1.3.1.jar commons-io-2.4.jar 具體使用版本,請根據專案進行選擇。
SpringMVC用MultipartFile上傳檔案及檔名中文亂碼
前言 過程 參考 前言 近日,專案中有個需求-android端上傳一個商品多張圖片,需要java後臺。以前後臺使用了struts,現在是springmvc。想著很多東西是不是能
上傳單個或多個檔案
一、匯入包<link rel="styleSheet" type="text/css"href="<c:url value='/fileupload/fileupload.css'/>" /><script type="text/javascri
SpringMVC使用MultipartFile上傳檔案
1. MultipartFile基本介紹 MultipartFile是springmvc官方提供的一個比較完善的檔案上傳元件,MultipartFile是一個組織介面它的實現類有 org.springframework.web.multipart.commons.CommonsMultipartFi
Plupload 上傳詳細講解,Plupload 多實例上傳,Plupload多個上傳按鈕--推薦使用
.html 目前 clas 路徑 arc 我們 參考 等等 選擇 今天幫朋友解決 Plupload 上傳的問題,查了很多資料,資料還是挺全的,但是有點零零散散的,故整理好,合並發出來。 本教程包括: Plupload 上傳詳細講。 Plupload 多實例
C++獲取電腦上連接的多個攝像頭名稱與編號
return 運行 cat coin 編號 ase system void bstr #include<iostream>#include "strmif.h"#include <initguid.h>#include<vector>#i
電腦上同時裝了多個版本EXCEL如何默認打開excel2013版本呢【已解決】
water term 入門到 image cto roc excel2013 ref 時裝 有的朋友電腦上同時裝了Office2010和2013, 表格文件已經選了默認用2013打開,但是每一次打開文件還是2010的,怎麽才能設置用2013打開呢? 1、卸載OFFICE20
python 在不同CPU上同時運行多個程序
www. self. sel random com .com program http uri 出處/From https://www.quora.com/If-you-run-Python-under-a-dual-core-CPU-then-can-you-run-tw
不用再打渠道包了,用它就可以快速統計多個渠道!
使用Shareinstall的免打包渠道統計技術,可以實現只上傳一個APK安裝包,以直接向各個渠道分配渠道連結(二維碼)的方式實現多渠道統計,完全不用再麻煩技術的同事幫忙打包,直接由渠道業務管理的同事操作生成渠道連結即可。 稍微介紹一下,Shareinstall其實是一個APP的推廣輔助
在同一臺機器上實現主從複製,多個mysql(windows)
最近在自學,看到了mysql的主從複製,覺得挺有意思的,就研究了下.無奈試了多種方法均以失敗告終,最後只好在同一臺機器上安裝多個mysql.試試主從複製. 一共試了三種方式,目前只成功了一種. 1.用雲伺服器坐從伺服器,本地的電腦做主伺服器
linux 用 grep 查找單個或多個字符串(關鍵字)
grep 關鍵字 inux rep tmp php lin log 成功 1.單個 cat /tmp/php.log | grep "成功" 所有的成功都會被查詢出來。 2.多個,並列查詢 cat /tmp/php.log | grep "推薦
android 利用OKhttp 上傳單張或者多張圖片
沒有廢話,程式碼如下 if (path.size() > 0) {//path存放imgurl的集合 for (int i = 0; i < path.size(); i++) { OkHttpClient client = new OkHt
Linux上後臺同時執行多個程式
因為需要進行神經網路的引數搜尋,需要在伺服器上同時執行多個程式。 編寫測試程式: vim a.py vim b.py 查閱到以下方法: 1、 vim c.py 結果 這是順序執行的,不是並行 2、 vim total 許可權改為可執行chmod +x
mybatis的配置檔案中使用兩個或多個foreach進行多個集合遍歷的問題
<select id="selectTrafficEventIngByType" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> f
xpath選擇兄弟節點、返回上一級和選擇多個屬性
選擇兄弟節點 選擇前N位的div標籤 preceding-sibling::div[N] 選擇後N位的div標籤 following-sibling::div[N] 選擇上一級 ../ 結合使用 //td[text()='xxx']/../fo
Okhttp 上傳單張、多張圖片,下載工具類
以下是對okhttp的封裝,希望大家不要見笑,很好用的 import android.content.Context; import android.os.Environment; import android.support.annotation.NonNull; import a
如何在一臺電腦上執行兩個或多個Tomcat
1)在系統環境變數中增加JAVA_HOME2=C:\Program Files\Java\jdk1.7.0_17 (同時,由於解決了其手動不能啟動的問題,故也順便將其解決方法中設定的路徑改為: 編輯startup.bat檔案,新增set JAVA_HOME2=C:\Program Files\Java\j
一個form表單中,上傳和接收多個相同的name欄位引數
一般我們在同一個表單中,都會提交不同的name欄位。可是,我遇到了提交相同欄位的情況,例子如下: <form action="test_receive.php" method="post"> <div> <
在一臺電腦上執行兩個或多個tomcat
修改其中一個tomcat中的某些引數,為了避免啟動tomcat時出現衝突,編輯bin/startup.bat, 在檔案第一行新增如下兩行 SET JAVA_HOME=C:\websoft\jdk1.6.0_33 (JDK所在路徑) SET CATALINA_HOME=C:\test\tomcat222222
Plupload 上傳詳細講解,Plupload 多例項上傳,Plupload多個上傳按鈕
Plupload 上傳成功獲取返回值. DEMO:<!DOCTYPE html><html><head><metacharset="UTF-8"><title>Plupload使用指南</title><!-- 首先需要引入pl