ajaxspringmvc文件上傳
① spring mvc上傳文件表單同時傳值的問題
當在上傳表單中設置了 enctype="multipart/form-data" 時post傳過去的字元串的值為null,會報 HTTP Status 400 - Required String parameter 'description' is not present 錯誤。
解決方案:
1、首先在pom.xml中添加
然後在applicationContext.xml中添加即可解決,這樣的話spring會對表單的數據進行處理,就算使用了enctype="multipart/form-data"進行傳值也能拿到數據
② Spring Mvc 怎麼上傳超過全局配置的文件
springMVC是一個非常方便的web層框架,我們使用它的文件上傳也非常的方便。
我們通過下面的配置來使用springMVC文件上傳功能。
<bean id="multipartResolver" class="com.youth.controller.fileupload.MultipartListenerResolver">
<!-- 設置上傳文件的最大尺寸為10M -->
<property name="maxUploadSize" value="10240"/>
<property name="maxInMemorySize" value="4096"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="true"/> </bean>
Controller層我們這樣接收文件
@RequestMapping("fileUpload")public void fileUpload(@RequestParam("myFile") MultipartFile multipartFile) throws Exception{
String fileName = multipartFile.getOriginalFilename();
File f = createFile(fileName);
multipartFile.transferTo(f);
}
頁面上記得指定enctype屬性哦
<form method="post" enctype="multipart/form-data"></form>
如果你的springMVC配置是正確的,那麼到此springMVC的文件上傳功能已經可以用了。一切都很完美。
由於我們配置了maxUploadSize屬性,那麼如果我們的文件超過了10M會出現什麼情況呢?
理論上系統會拋出異常,那麼如何處理呢?
springMVC異常處理的配置方式如下:
<bean class="org.springframework.web.servlet.handler.">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">redirect:/error.jsp</prop>
<prop key="org.springframework.web.multipart.">redirect:/MaxUploadSizeError.jsp</prop>
</props> </property><property name="defaultErrorView" value="redirect:/error.jsp"></property> <property name="defaultStatusCode" value="500"></property></bean>
上面的配置作用是如果系統拋出異常,系統跳轉到MaxUploadSizeError.jsp頁面給用戶以提示。
如果是其他Exception異常,則跳轉到error.jsp頁面。
接下來我們測試一下上面的異常處理是否生效了。
在你的代碼任意地方試著拋出NullPointException異常,發現頁面的確能跳轉到error.jsp,證明我們的異常處理是生效的。
然後我們上傳一個10M以上的文件,我們發現後台控制台拋出了異常,我們期待著頁面轉向到MaxUploadSizeError.jsp。
③ spring mvc 實現多個文件上傳 List<MultipartFile> files = request.getFiles("file"); 報錯
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判斷request是否有文件需要上傳
if (multipartResolver.isMultipart(request)) {
//轉換成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
//讀取文件
List<MultipartFile> file = multiRequest.getFiles("file");
④ springmvc怎麼接受ajax發送過來的文件
你文件上傳用的什麼方式
如果是submit直接提交的需要給form加一個屬性:enctype="multipart/form-data"
如果是非同步提交則需要看你的上傳控制項的ID是否正確
⑤ 使用框架springmvc+spring+mybatis Ajax跳轉進行文件上傳時為什麼沒有file傳過去,
你確定你前台寫對了?搜一下,ajax非同步上傳文件,找個案例看看。
⑥ springmvc 多文件上傳 MultipartFile 怎麼獲取前台傳過來的參數
用@ResponseBody
@RequestMapping(value = "/address", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> addressPOST() {
Map<String, Object> map = new HashMap<>();
ReceivedGoodsAddress receivedgoodsaddress=new ReceivedGoodsAddress();
List<ReceivedGoodsAddress> list = addressService.findReceivedGoodsAddress(receivedgoodsaddress);
map.clear();
map.put("list", list);
return map;
}
//前台用jquery+ajax
$.ajax({
type:'POST',
url:'${contextPath}/address',
dataType:'json',
success:function(data){
$.each(data.list,function(i,item){
alert(i);
alert(item.id);
alert(item.name);
});
}
});
⑦ SpringMVC表單提交時,多文件上傳和單個文件上傳有些什麼區別
上傳這樣的功能本來就應該獨立出來,為以後能夠更好的擴展和組件重用做准備。至於你的這個問題也很容易處理,問題的關鍵不在於後台處理的程序如何安排,而在於頁面的表現形式,因為程序本身既然獨立出來了,你的ACTION也是獨立出來的,那麼就把頁面里的上傳功能獨立出來。
舉例來說:
在你的表單里添加一個上傳按鈕,點擊後彈出一個漂浮的div圖層,然後在這個圖層里可以放置單個的文件瀏覽按鈕,或者動態的增加多個需要上傳的瀏覽按鈕,都是很靈活的,然後把這個圖層使用單獨的form標簽包圍起來就可以了。
類似的功能像很多論壇程序都在使用,比較成熟的js組件也可以實現,比如ExtJs、jQuery等等,一般來說能夠提供web editor功能的js組件對於上傳都是類似的處理方式。
⑧ springmvc怎麼將上傳本地文件到文件伺服器
Spring MVC為文件上傳提供了直接的支持,這種支持是通過即插即用的MultipartResolver實現的。Spring使用Jakarta Commons FileUpload 技術實現了一個MultipartResolver實現類:CommonsMultipartResolver。
Spring MVC上下文中默認沒有裝配MultipartResolver,因此默認情況下不能處理文件的上傳工作。如果想要使用Spring的文件上傳功能,需要先在上下文中配置MultipartResolver。
第一步:配置MultipartResolver
使用CommonsMultipartResolver配置一個MultipartResolver解析器:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="UTF-8"
p:maxUploadSize="5242880"
⑨ spring mvc word文件上傳之後可預覽的實現方法或者步驟
你好!
springmvc文件上傳
1.加入jar包:
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
lperson.java中加屬性,實現get ,set方法
private String photoPath;
2.創建WebRoot/upload目錄,存放上傳的文件
1 <sf:form id="p" action="saveOrUpdate"
2 method="post"
3 modelAttribute="person"
4 enctype="multipart/form-data">
5
6 <sf:hidden path="id"/>
7 name: <sf:input path="name"/><br>
8 age: <sf:input path="age"/><br>
9 photo: <input type="file" name="photo"/><br>
上面第9行文件上傳框,不能和實體對象屬性同名,類型不同
controller配置
1 12、文件上傳功能實現 配置文件上傳解析器
2 @RequestMapping(value={"/saveOrUpdate"},method=RequestMethod.POST)
3 public String saveOrUpdate(Person p,
4 @RequestParam("photo") MultipartFile file,
5 HttpServletRequest request
6 ) throws IOException{
7 if(!file.isEmpty()){
8 ServletContext sc = request.getSession().getServletContext();
9 String dir = sc.getRealPath(「/upload」); //設定文件保存的目錄
10
11 String filename = file.getOriginalFilename(); //得到上傳時的文件名
12 FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());
13
14 p.setPhotoPath(「/upload/」+filename); //設置圖片所在路徑
15
16 System.out.println("upload over. "+ filename);
17 }
18 ps.saveOrUpdate(p);
19 return "redirect:/person/list.action"; //重定向
20 }
3.文件上傳功能實現 spring-mvc.xml 配置文件上傳解析器
1 <!-- 文件上傳解析器 id 必須為multipartResolver -->
2 <bean id="multipartResolver"
3 class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
4 <property name="maxUploadSize" value=「10485760"/>
5 </bean>
6
7 maxUploadSize以位元組為單位:10485760 =10M id名稱必須這樣寫
1 映射資源目錄
2 <mvc:resources location="/upload/" mapping="/upload/**"/>
隨即文件名常用的三種方式:
文件上傳功能(增強:防止文件重名覆蓋)
fileName = UUID.randomUUID().toString() + extName;
fileName = System.nanoTime() + extName;
fileName = System.currentTimeMillis() + extName;
1 if(!file.isEmpty()){
2 ServletContext sc = request.getSession().getServletContext();
3 String dir = sc.getRealPath("/upload");
4 String filename = file.getOriginalFilename();
5
6
7 long _lTime = System.nanoTime();
8 String _ext = filename.substring(filename.lastIndexOf("."));
9 filename = _lTime + _ext;
10
11 FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());
12
13 p.setPhotoPath("/upload/"+filename);
14
15 System.out.println("upload over. "+ filename);
16 }
圖片顯示 personList.jsp
1 <td><img src="${pageContext.request.contextPath}${p.photoPath}">${p.photoPath}</td>
⑩ springmvc怎麼將上傳本地文件到文件伺服器
web文件上傳採用post的方式,與post提交表單不同的是,上傳文件需要設置form的enctype屬性為multipart/form-data.由於上傳的文件會比較大,因此需要設置該參數指定瀏覽器使用二進制上傳。如果不設置,enctype屬性默認為application/x-www-form-urlencoded,使用瀏覽器將使用ascii向伺服器發送數據,導致發送文件失敗。
上傳文件要使用文件域(
,並把form的enctype設置為multipart/form-data.
