非常牛叉的樓主,自己的問題其實就是答案--用springmvc上傳檔案時報The current request is not a multipart request異常
http://bbs.csdn.net/topics/380167574?page=1
非常牛叉的樓主,自己的問題其實就是答案
原因在於目錄下有一個upload檔案導致的
小弟我用spring3.1.0做了一個上傳檔案的例子,但發現一個奇怪的問題,就是當指定requestMapping單獨為upload的時候會出現404錯誤(如專案名是springTest,此URL為springTest/upload),除錯後發現當URL中單獨只有upload時它的method會被解析為GET,而我在form表單中是指定了POST的。修改為其他名稱是沒問題的。
下面上程式碼:
web.xml程式碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<? xml version = "1.0" encoding = "UTF-8" ?> < web-app id = "WebApp_ID" version = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> < servlet > < servlet-name >spring</ servlet-name > < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >spring</ servlet-name > < url-pattern >/</ url-pattern > </ servlet-mapping > </ web-app > |
spring-servlet.xml如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<? xml version = "1.0" encoding = "UTF-8" ?> < beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:context = "http://www.springframework.org/schema/context" xmlns:mvc = "http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> < context:component-scan base-package = "org.springframework.web.fileupload" /> < bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" > < property name = "maxUploadSize" value = "100000" /> </ bean > < bean id = "viewResolver" class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView" /> < property name = "prefix" value = "/WEB-INF/jsp/" /> < property name = "suffix" value = ".jsp" /> </ bean > < mvc:annotation-driven /> </ beans > |
測試頁面fileUpload.jsp如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> < html > < head > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" > < title >Upload File</ title > </ head > < body > < form method = "post" action="<c:url value = '/upload' />" enctype="multipart/form-data"> < input type = "file" name = "file" /> < input type = "submit" value = "上傳" /> </ form > </ body > </ html > |
另外有一個簡單的Controller:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package org.springframework.web.fileupload; import java.io.FileOutputStream; import java.io.IOException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; @Controller public class FileUploadController{ @RequestMapping (value= "/upload" ) public ModelAndView uploadFile( @RequestParam (value= "file" ) MultipartFile file) { if (!file.isEmpty()) { FileOutputStream fos = null ; try { byte [] bytes = file.getBytes(); fos = new FileOutputStream( "D:\\" +file.getOriginalFilename()); fos.write(bytes); } catch (IOException e) { e.printStackTrace(); } finally { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } return new ModelAndView( "message" ); } } |
這裡檔案預設寫入到D盤根目錄下。
在WEB-INF/jsp目錄下有一個message.jsp,那個可有可無,只是提示而已。
不知道怎麼上傳圖片,所以沒辦法上傳當時的圖片。
它報的一個錯誤是
org.springframework.web.multipart.MultipartException: The current request is not a multipart request.
而這個是由提交的方法為get引起的。
這個問題當修改form提交的action名稱,即把upload修改為其他名稱,或者不單獨為"專案名/upload"就不會有這個問題。當然,修改後要修改相應的requesetMapping。
麻煩各位壇友看看。謝謝。
相關文章
- 檔案上傳的異常
- MVC檔案上傳 - 使用Request.Files上傳多個檔案MVC
- scope="session"和scope="request"--丟擲異常非常的bug+垃圾Session
- 【等待事件】global cache cr request/gc current request事件GC
- python request.post異常Python
- 用java+ftp實現檔案上傳的問題?JavaFTP
- ASP.NET Core檔案上傳IFormFile於Request.Body的羈絆ASP.NETORM
- springmvc實現檔案上傳SpringMVC
- Nginx 報錯413 Request Entity Too Large 上傳檔案過大Nginx
- git上傳檔案時報錯常見的處理辦法Git
- 解決表格檔案上傳無法刪除臨時檔案的問題Failed to perform cleanup of multipart itemsAIORM
- 解決gc current request等待事件GC事件
- 【SpringMVC】檔案上傳與下載、攔截器、異常處理器SpringMVC
- SpringMVC中採用簡潔的配置實現檔案上傳SpringMVC
- gc current request 引起長期鎖表的故障GC
- SpringMvc檔案上傳SpringMVC
- jspSmart上傳檔案時異常?JS
- SpringMVC 單檔案上傳與多檔案上傳SpringMVC
- gc current request等待時間處理GC
- SpringMVC 404:Bad requestSpringMVC
- 非常牛叉的技術網站網站
- SpringMVC多個檔案上傳實現SpringMVC
- HTTP multipart/form-data格式之檔案上傳HTTPORM
- SpringMVC之檔案上傳SpringMVC
- 檔案上傳需要注意的問題
- SpringMVC實現多檔案上傳原始碼SpringMVC原始碼
- SpringMVC實現檔案上傳&下載(2)SpringMVC
- SpringMVC中的檔案上傳和下載SpringMVC
- JavaWeb之SpringMVC上傳檔案JavaWebSpringMVC
- 請教一個檔案上傳的問題
- 關於檔案上傳的問題smartUpload
- 上傳檔案超時問題
- C#中,用Web頁上傳檔案大小限制的問題C#Web
- 寫給自己的分塊上傳檔案
- request的get和post引數亂碼問題
- PHP上傳檔案到七牛(Qiniu)PHP
- 關於request.getCookie()問題?Cookie
- SpringMVC檔案上傳下載(單檔案、多檔案)SpringMVC