SpringMVC中使用CommonsMultipartResolver進行檔案上傳
概述:
CommonsMultipartResolver是基於Apache的Commons FileUpload來實現檔案上傳功能的。所以在專案中需要相應的jar檔案。
FileUpload版本要求1.2及以上。相應的gradle配置:
"commons-fileupload:commons-fileupload:1.2.2"
上傳方法的實現
1. 程式碼方式
直接在controler中new一個CommonsMultipartResolver。
@Controller
@RequestMapping(value = "/file")
public class FileController {
@RequestMapping(value = "/commUploadA")
@ResponseBody
public JSONObject commUploadA(HttpServletRequest request) {
JSONObject json = new JSONObject();
json.put("succ", false);
try {
//直接new一個CommonsMultipartResolver
CommonsMultipartResolver cmr = new CommonsMultipartResolver(request.getServletContext());
cmr.setDefaultEncoding("utf-8");
cmr.setMaxInMemorySize(40960);
cmr.setMaxUploadSize(10485760000L);
if (cmr.isMultipart(request)) {
MultipartHttpServletRequest multipartRequest = cmr.resolveMultipart(request);
MultipartFile file = multipartRequest.getFile("uploadFile" );// 與頁面input的name相同
File imageFile = new File("d:/upload1.jpg");// 上傳後的檔案儲存目錄及名字
file.transferTo(imageFile);// 將上傳檔案儲存到相應位置
json.put("succ", true);
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return json;
}
}
2. Xml方式
通過spring配置一個名為”multipartResolver”的bean。
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="10485760000"></property>
<property name="maxInMemorySize" value="40960"></property>
</bean>
controller中的方法做相應修改。
@Controller
@RequestMapping(value = "/file")
public class FileController {
@RequestMapping(value = "/commUploadB")
@ResponseBody
public JSONObject commUploadB(MultipartHttpServletRequest request) {//引數型別不同
JSONObject json = new JSONObject();
json.put("succ", false);
try {
MultipartFile file = request.getFile("uploadFile");// 與頁面input的name相同
File imageFile = new File("d:/upload2.jpg");// 上傳後的檔案儲存目錄及名字
file.transferTo(imageFile);// 將上傳檔案儲存到相應位置
json.put("succ", true);
return json;
} catch (Exception e) {
e.printStackTrace();
return json;
}
}
}
兩種方法的區別:
- 將CommonsMultipartResolver的例項化由程式碼實現改為了xml配置實現。
- 方法中的引數型別由HttpServletRequest變為了MultipartHttpServletRequest。
而上傳的獲取和儲存邏輯沒有變化。
注意:
在使用xml方式時,bean的名字必須為:multipartResolver。可在org.springframework.web.servlet.DispatcherServlet中找到原因:
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";
......
/**
* Initialize the MultipartResolver used by this class.
* <p>If no bean is defined with the given name in the BeanFactory for this namespace,
* no multipart handling is provided.
*/
private void initMultipartResolver(ApplicationContext context) {
try {
this.multipartResolver = context.getBean(MULTIPART_RESOLVER_BEAN_NAME, MultipartResolver.class);
if (logger.isDebugEnabled()) {
logger.debug("Using MultipartResolver [" + this.multipartResolver + "]");
}
}
catch (NoSuchBeanDefinitionException ex) {
// Default is no multipart resolver.
this.multipartResolver = null;
if (logger.isDebugEnabled()) {
logger.debug("Unable to locate MultipartResolver with name '" + MULTIPART_RESOLVER_BEAN_NAME +
"': no multipart request handling provided");
}
}
}
......
}
簡要分析CommonsMultipartResolver
CommonsMultipartResolver實現介面org.springframework.web.multipart.MultipartResolver,主要作用是將HttpSerlvetRequest封裝成MultipartHttpServletRequest。
public interface MultipartResolver {
......
MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException;
......
}
具體的封裝方法參考CommonsMultipartResolver對resolveMultipart的實現:
org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(javax.servlet.http.HttpServletRequest)
相關推薦
JQueryAjax使用SpringMVC中MultipartFile進行檔案上傳的整合
對於一個帶有檔案上傳的表單,後臺使用springMVC封裝的MultipartFile file接收檔案,並且需要使用非同步提交,並返回相應的提示資訊 在這種情況下,我最開始使用了好幾種方法 第一種:普通的JQUERY的AJAX,但是後臺一旦使用MultipartFile
SpringMVC中使用CommonsMultipartResolver進行檔案上傳
概述: CommonsMultipartResolver是基於Apache的Commons FileUpload來實現檔案上傳功能的。所以在專案中需要相應的jar檔案。 FileUpload版本要求1.2及以上。相應的gradle配置: "co
SpringMVC使用FileUpload進行檔案上傳
匯入FileUpload和common-io的Jar包 注意:1、Struts2需要使用其他方法:struts2過濾時,會改變reqeust的型別,由HttpServletRequest變成MultiPartRequestWrapper 1、Test.jsp: <f
springMVC上傳檔案,MultipartHttpServletRequest、MultipartFile進行檔案上傳
這裡使用apache的開源jar包完成上傳功能,使用jar包分別是:common-fileupload.jar和common-io.jar 先編寫上傳檔案幫助類,如果需要區分檔案型別,可以將檔案字尾擷取進行判斷; springmvc-mvc.xml配置,這裡主要配置spri
SpringMVC+Postman進行檔案上傳測試
SpringMVC+Postman進行檔案上傳測試 一、軟體下載
springmvc Excel檔案上傳,使用ajaxSubmit方法進行檔案上傳,使用彈出層彈出一個框(jquery layer),點選進行下載
效果: 彈出層使用的是jquery外掛layer 外掛下載地址http://download.csdn.net/detail/rendeyishi/8048139 因為我是使用的是jquery裡面的ajaxSubmit進行檔案上傳 所以這個jquery.form.js必
Java專案中對MongoDB資料庫進行檔案上傳
import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; import com.mongodb.client.gridfs.GridFSBucket; import com.mongodb.client.gridfs.G
Idea中使用Springboot和webuploader外掛進行檔案上傳
關於使用webuploader進行初步的檔案上傳,做一個筆記。 開發工具: IntelliJ IDEA 使用框架: SpringBoot 前端頁面: FreeMaker 專案準備 引入需要的jar包 <depe
SpringMVC中使用ajaxfileupload非同步上傳圖片檔案視訊
摘要:一、在專案中匯入commons-fileupload-1.3.1.jarcommons-io-2.4.jar 兩個jar包,引入專案中。、二、並在Spring-mvc.xml中配置multipart的上傳解析器,這裡上傳的都是通過multipart這個類<!--
SpringMVC中的文件上傳
.get 界面 org 存在 編碼格式 docx 後綴 cti 時間 SpringMVC中的文件上
SpringMVC學習(九)——SpringMVC中實現文件上傳
enc 一個人 ast max fonts common clas c學習 本地磁盤 這一篇博文主要來總結下SpringMVC中實現文件上傳的步驟。但這裏我只講單個文件的上傳。 環境準備 SpringMVC上傳文件的功能需要兩個jar包的支持,如下: 工程中肯定要導入
SpringMVC響應檢視丶檔案上傳丶異常處理丶攔截器
SpringMVC響應資料和結果檢視 返回值分類 返回字串 Controller方法返回字串可以指定邏輯檢視的名稱,根據檢視解析器為物理檢視的地址。 引數可以寫一個Model來儲存域物件中的值 應用例子: @Controller @Req
webupload上傳外掛中,單個檔案上傳處理
上傳外掛如何使用,我這裡就不多說了,網上大把教程。今天我要講的是如何限制上傳一個檔案,以及當檔案選擇錯誤是,再重新選擇檔案導致的問題。 預設給上傳外掛支援多檔案上傳,但是我們有很多需求是之上傳單個檔案,下面就來一起學習學習吧! 外掛html <div class="form-g
Yii框架使用Curl進行檔案上傳(微信公眾號)
public function actionUpload(){ $type = Yii::$app->request->post('type'); //獲取token $token = Yii::$app->cache->get($this->t
**#使用springboot進行檔案上傳和下載**
使用springboot進行檔案上傳和下載 ##檔案下載功能的實現思路: 1.獲取要下載的檔案的絕對路徑 2.獲取要下載的檔名 3.設定content-disposition響應頭控制瀏覽器以下載的形式開啟檔案 4.獲取要下載的檔案輸入流 5.建立資料緩衝區//緩衝區解釋
SpringMVC(六)檔案上傳
SpringMVC(六)檔案上傳 Spring MVC對上傳檔案的支援 首先,DispatcherServlet會使用介面卡模式,將HttpServletRequest介面物件轉換為MultipartHttpServertRequest物件。MultipartHttpServet
使用SecureCRT如何進行檔案上傳
使用SecureCRT如何進行檔案上傳 聽語音 | 瀏覽:3221 | 更新:2017-09-14 12:06 1 2 3 4 5 6 7 分步閱讀 在部署專
SpringMVC筆記八之檔案上傳下載
一、檔案上傳 1、普通檔案上傳 新建頁面WebContent/file.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<SpringMvc>入門五 檔案上傳
檔案上傳的必要條件: 1.form表單的enctype取值必須是:mutipart/form-data (預設是:application/x-www-form-urlencoded) 2.method屬性為:post 3.提供一個文字選擇域<input type="file" />
Vue 實現 拖拽檔案到網頁進行檔案上傳【JS/JQ 原理也是一樣的】
效果: 拖入檔案前: 拖入檔案後: html: <div id="select_frame"> <div ref="select_frame" class=