當前位置:首頁 » 文件管理 » javamvc附件上傳

javamvc附件上傳

發布時間: 2025-07-02 15:23:11

㈠ spring mvc 怎麼大小上傳文件控制

1、SpringMVC的配置文件裡面可以配置限制上傳文件的大小,比如40MB,但是,如果在頁面上上傳超過40MB ,則他都不進入到Action,則直接就報錯了。被攔截了。

2、客戶端判斷的話,IE8、IE9、火狐好像支持都不一樣,有說用Flash的,有說用HTML5的,
個人感覺HTML5不太靠譜,畢竟現在的應用肯定是要支持IE8、IE9的。

java實現文件上傳,代碼盡量簡潔~~~~~·

你說的2種方法都是很簡單的,參考網上的資料都不難做出,用io流做更是基礎中的基礎,我說下smartupload好了,有的人是直接寫在jsp上面,感覺比較亂,我一般都是寫在action裡面,打好jar包和配置後

SmartUpload mySmartUpload = new SmartUpload();

//如果是struts2.0或者webwork 則是mySmartUpload.initialize(ServletActionContext.getServletConfig(),ServletActionContext.getRequest(),ServletActionContext.getResponse());

mySmartUpload.initialize(servlet.getServletConfig(), request,response);
mySmartUpload.setTotalMaxFileSize(500000);
//如果上傳任意文件不設置mySmartUpload.setAllowedFilesList(文件後綴名)就可以了
mySmartUpload.upload();
for (int i = 0; i < mySmartUpload.getFiles().getCount(); i++) {
com.jspsmart.upload.File file = mySmartUpload.getFiles().getFile(i);
if (file.isMissing()) continue;
file.saveAs(保存的地址 + file.getFileName(),
su.SAVE_PHYSICAL);

㈢ SpringMVC使用commons fileupload 上傳文件,parseRequest(request)得到的集合為空,急等大神指點。

既然你已經用了Spring MVC,就沒有必要自己寫上傳的代碼了,這樣做
下一個這樣的方法,把MultipartFile傳進去
public String upload(@RequestParam(value = "image") MultipartFile image)
然後就可以這樣做了
image.transferTo(new File("想要保存到哪裡"));

image還有其他的方法,自己看一下就可以了

XML配置一個bean

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="maxInMemorySize" value="4096" />
<property name="defaultEncoding" value="utf-8" />
</bean>

㈣ spring mvc 多文件上傳時報錯MultipartHttpServletRequest

1、確認<form name="contractForm" id="contractForm" action="" method="post" enctype ="multipart/form-data">;
2、確認commons-fileupload.jar 和 org.springframework.web.jar 存在環境
3、MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
這一句會報錯:ApplicationHttpRequest cannot be cast to MultipartHttpServletRequest
解決辦法是通過這種方式:
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);

㈤ 求SpringMVC大文件上傳詳解及實例代碼

SpringMVC的文件上傳非常簡便,首先導入文件上傳依賴的jar:
<!-- 文件上傳所依賴的jar包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

在springMVC-servlet.xml配置文件中配置文件解析器:
<!--1*1024*1024即1M resolveLazily屬性啟用是為了推遲文件解析,以便捕獲文件大小異常 -->
<!--文件上傳解析器-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1048576"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="resolveLazily" value="true"/>
</bean>
注意解析器的id必須等於multipartResolver,否則上傳會出現異常
import org.apache.commons.io.FileUtils;
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.multipart.commons.CommonsMultipartFile;

import java.io.File;

@Controller
public class FileController {
/**
* 上傳單個文件操作
* MultipartFile file就是上傳的文件
* @return
*/
@RequestMapping(value = "/upload1.html")
public String fileUpload1(@RequestParam("file") MultipartFile file) {
try {
//將上傳的文件存在E:/upload/下
FileUtils.InputStreamToFile(file.getInputStream(), new File("E:/upload/",
file.getOriginalFilename()));
} catch (Exception e) {
e.printStackTrace();
}
//上傳成功返回原來頁面
return "/file.jsp";
}}

上傳文件時,Controller的方法中參數類型是MultipartFile即可將文件映射到參數上。
頁面:
file.jsp:
<form method="post" action="/upload1.html" enctype="multipart/form-data">
<input type="file" name="file"/>
<button type="submit" >提交</button>
</form>

㈥ ueditor 怎麼自定義上傳文件的路徑啊求指導,,最好是有源碼

UEditor是由網路WEB前端研發部開發的所見即所得的開源富文本編輯器,具有輕量、可定製、用戶體驗優秀等特點。
開源基於BSD協議,所有源代碼在協議允許范圍內可自由修改和使用。
網路UEditor的推出,可以幫助不少網站開發者在開發富文本編輯器所遇到的難題,節約開發者因開發富文本編輯器所需要的大量時間,有效降低了企業的開發成本。
優點
1、體積小巧,性能優良,使用簡單
2、分層架構,方便定製與擴展
3、滿足不同層次用戶需求,更加適合團隊開發
4、豐富完善的中文文檔
5、多個瀏覽器支持:Mozilla, MSIE, FireFox, Maxthon,Safari 和Chrome
6、更好的使用體驗
7、擁有專業QA團隊持續支持,已應用在網路各大產品線上
使用步驟
1.添加jar包 jar包位置:文件根目錄下jsp的lib文件夾下,把jar包復制到web-inf下的lib文件夾下buildpath
2.修改config.js中的URL路徑,修改為UEidtor插件在自己工程中的正確根路徑
3.在jsp文件中先引入配置文件config.js然後再源碼文件all.js(注意順序)
4.載入容器和實例化容器
1.修改config.js配置文件URL為插件根目錄,一般是絕對路徑。

2.修改config.json中上傳圖片配置項中的訪問路徑前綴為項目名稱,根據情況修改上傳文件路徑和訪問路徑。
配置正確之後UEditor有上傳功能幫助我們上傳圖片。
但是上傳路徑會在項目部署的臨時文件夾下。 tomcat取消部署後,上傳文件就會和項目部署文件一起被刪除

3.實現把圖片上傳到自定義路徑
在處理上傳後的文件名稱的時候注意不要出現中文
要不然還需要做處理才能正確讀取文件!

4.(1)首先在jsp中覆蓋UEidtor獲取路徑的方法

//覆蓋UEditor中獲取路徑的方法
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
//判斷路徑 這里是config.json 中設置執行上傳的action名稱
if (action == 'uploadimage') {
return 'http://localhost:8080/maven-web/uploadImage.do';
} else if (action == 'uploadvideo') {
return '';
} else {
return this._bkGetActionUrl.call(this, action);
}
}
(2)首先在springmvc配置文件中配置

<!-- 上傳配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
</bean>

在controller中定義上傳和讀取文件的方法
/**
* SpringMVC 用的是 的MultipartFile來進行文件上傳
* 這里用@RequestParam()來指定上傳文件為MultipartFile
* @throws IOException
*/
@RequestMapping("uploadImage")
@ResponseBody//這里upfile是config.json中圖片提交的表單名稱
public Map<String,String> uploadImage(@RequestParam("upfile") CommonsMultipartFile upfile,HttpServletRequest request) throws IOException{
//文件原名稱
String fileName=upfile.getOriginalFilename();
//為了避免重復簡單處理
String nowName=new Date().getTime()+"_" + fileName;
if(!upimage.isEmpty()){
//上傳位置路徑
String path0 = "D:\\eclipseworkspace\\maven-web\\src\\main\\webapp\\upload\\"+nowName;
//按照路徑新建文件
File newFile = new File(path0);
//復制
FileCopyUtils.(upimage.getBytes(), newFile);
}
//返回結果信息(UEditor需要)
Map<String,String> map = new HashMap<String,String >();
//是否上傳成功
map.put("state", "SUCCESS");
//現在文件名稱
map.put("title", nowName);
//文件原名稱
map.put("original", fileName);
//文件類型 .+後綴名
map.put("type", fileName.substring(upfile.getOriginalFilename().lastIndexOf(".")));
//文件路徑
map.put("url", "/"+nowName+"/getImage.do");
//文件大小(位元組數)
map.put("size", upfile.getSize()+"");

return map;
}
/**
* 讀取文件
*/
@RequestMapping("{imgName}/getImage")
public void readImg(@PathVariable("imgName") String imgName, HttpServletResponse response)
throws Exception {
//設置文件的返回類型
response.setContentType("image/*");
//文件路徑(windows下是\\,linux下是//,都必須是絕對路徑)
String imgPath="D:\\eclipseworkspace\\maven-web\\src\\main\\webapp\\upload\\"+imgName;
//java中用File類來表示一個文件
File image = new File(imgPath);
//測試這個文件路徑是否存在(也就是這個文件是否存在)
if (!image.exists()) {
return;
}
//FileUtils.readFileToByteArray(File file)把一個文件轉換成位元組數組返回
response.getOutputStream().write(FileUtils.readFileToByteArray(image));
//java在使用流時,都會有一個緩沖區,按一種它認為比較高效的方法來發數據:
//把要發的數據先放到緩沖區,緩沖區放滿以後再一次性發過去,而不是分開一次一次地發.
//而flush()表示強制將緩沖區中的數據發送出去,不必等到緩沖區滿.
response.getOutputStream().flush();
response.getOutputStream().close();
}

㈦ Java SpringBoot本地上傳文件到resources目錄永久保存下載的最佳實踐

在Java SpringBoot項目中,為了實現本地文件上傳並永久保存以便前端下載,最佳實踐是將文件存儲在resources目錄下,並結合target/classes目錄。以下是具體步驟:

首先,通過ResourceUtils.getURL("classpath:").getPath()獲取target/classes目錄的絕對路徑,前端上傳的文件應保存在此目錄下的子目錄,如upload/logo.jpg,返回的下載地址格式為http://localhost:8080/upload/logo.jpg。



然而,target目錄的變動性和不提交到代碼倉庫會導致文件丟失。這時,將文件保存在resources/upload目錄下更為合適,因為這個目錄通常會被提交到版本控制。每次上傳後,文件會自動同步到target/classes目錄,以實現實時訪問,但手動編譯運行會較為繁瑣。



為解決這個問題,可以結合target和resources目錄。使用System.getProperty("user.dir")獲取項目工作目錄,然後拼接資源目錄路徑。同時,需要檢查application.yml、pom.xml和WebMvcConfiguration中的相關配置,確保靜態資源正確映射和訪問。



當接收前端上傳的File對象時,直接保存到第一個目錄(如resources/upload),然後使用Spring的FileCopyUtils.方法復制到target/classes目錄,以實現文件的持久保存和實時訪問。



以下是一些關鍵代碼和配置示例:



  • UploadFileUtil.java

  • application.yml

  • WebMvcConfiguration



在實際操作中,Controller層需要處理文件上傳的邏輯,包括接收到File對象,保存到資源目錄,並確保配置正確,以便前端能夠順利訪問。

㈧ 如何深入 spring mvc

SpringMVC是一個輕量級的MVC框架,SpringMVC由於其輕量級的實現以及與Spring框架的無縫整合等諸多優勢,近年來在MVC框架中脫穎而出,受到諸多開發人員的青睞,學習SpringMVC勢在必行。

Web環境中使用SpringMVC:SpringMVC提供了可插拔式的框架嵌入形式,將SpirngMVC插入或者從Web項目中卸載只需要簡單的修改配置文件即可。

  • 配置前端控制器,SpringMVC的入口程序為一個全局的Servlet,該Servlet攔截指定的一組請求交給SpringMVC框架執行後續的處理操作,在Web.xml中配置如下欄位。

  • [java]view plain

  • <!--SpingMVC的前端控制器-->

  • <servlet>

  • <servlet-name>dispatcher</servlet-name>

  • <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  • <!--配置SpringMVC的IOC容器-->

  • <init-param>

  • <param-name>contextConfigLocation</param-name>

  • <param-value>/WEB-INF/root-context.xml</param-value>

  • </init-param>

  • <load-on-startup>1</load-on-startup>

  • </servlet>

  • <!--配置攔截所有的請求-->

  • <servlet-mapping>

  • <servlet-name>dispatcher</servlet-name>

  • <url-pattern>/</url-pattern>

  • </servlet-mapping></span></span>

  • 創建SpringMVC IOC容器的配置文件root-context.xml並定義視圖解析器,位置/WEB-INF/

  • [java]view plain

  • <!--配置自動掃面的包-->

  • <context:component-scanbase-package="cn.com.xiaofen"/>

  • <!--定義視圖解析器-->

  • <bean

  • class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  • <propertyname="prefix"value="/WEB-INF/view/"></property>

  • <propertyname="suffix"value=".jsp"></property>

  • </bean>

  • <!--<mvc:default-servlet-handler/><mvc:annotation-driven/>--></span></span>

  • 定義控制器,SpringMVC中定義方法來響應客戶端請求,內存開銷更小效率更高。

  • [java]view plain

  • @Controller

  • @RequestMapping("/T")

  • publicclassT{

  • @RequestMapping("/t_1")

  • publicStringt_1(){

  • System.out.println("t_1");

  • return"index";

  • }

  • }

  • 定義視圖,根據實際的視圖解析器完成相關視圖的配置,當前配置視圖應該在/WEB-INF/view/下且文件類型為JSP文件,具體的應該在該目錄下新建一個名稱為index的jsp文件名稱。

  • SpringMVC處理請求的工作流:DispatcherServlet作為SpringMVC框架的入口程序,負責調度SpringMVC框架響應用戶的請求,如下圖為宏觀上SpingMVC處理一次請求大概需要經過以下調度過程。

  • 請求進入由前端控制器(DispatcherServlet )攔截。

  • 前端控制器分析請求將請求委託至具體的控制器來處理。

  • 控制器處理請求返回邏輯視圖(Model)。

  • 前端控制器得到邏輯視圖對象,調度視圖解析器,解析視圖模版給用戶響應。

  • 返回前端控制器。

  • SpringMVC請求流程(部分源碼分析):由DispatcherServlet的doService()方法入手,篇幅關系,下文僅列出核心的代碼,下文的代碼並並保證時間上的順序性。

  • DispatcherServlet調用doDispatch處理請求。

  • [java]view plain

  • try{

  • /*邏輯視圖及上文提到的Model*/

  • ModelAndViewmv=null;

  • ExceptiondispatchException=null;

  • try{

  • /*文件上傳預處理*/

  • processedRequest=checkMultipart(request);

  • multipartRequestParsed=(processedRequest!=request);

  • /*確定當前請求的處理者*/

  • mappedHandler=getHandler(processedRequest);

  • /*請求資源未發現*/

  • if(mappedHandler==null||mappedHandler.getHandler()==null){

  • noHandlerFound(processedRequest,response);

  • return;

  • }

  • /*確定當前請求的處理者適配器*/

  • HandlerAdapterha=getHandlerAdapter(mappedHandler.getHandler());

  • //...............

  • /*請求調度前應用的攔截器*/

  • if(!mappedHandler.applyPreHandle(processedRequest,response)){

  • return;

  • }

  • /*調用處理程序*/

  • mv=ha.handle(processedRequest,response,mappedHandler.getHandler());

  • //......

  • /*請求調度後應用的攔截器*/

  • mappedHandler.applyPostHandle(processedRequest,response,mv);

  • }

  • catch(Exceptionex){

  • dispatchException=ex;

  • }

  • /*解析視圖給用戶響應*/

  • processDispatchResult(processedRequest,response,mappedHandler,mv,dispatchException);

  • }

  • 理解HandlerMapper,一個HandlerMapper代表一個請求到到處理對象的映射,該對象的創建依據是請求響應關系。getHandler方法部分源碼分析如下。

  • [java]view plain

  • (HttpServletRequestrequest)throwsException{

  • 遍歷查找滿足條件的HandlerMapping

  • for(HandlerMappinghm:this.handlerMappings){

  • if(logger.isTraceEnabled()){

  • logger.trace(

  • "Testinghandlermap["+hm+"]inDispatcherServletwithname'"+getServletName()+"'");

  • }

  • HandlerExecutionChainhandler=hm.getHandler(request);

  • if(handler!=null){

  • 存在

  • returnhandler;

  • }

  • }

  • 不存在

  • returnnull;

  • }

  • 理解HandlerAapter,SpringMVC 中通過HandlerAdapter的handler方法來調用實際的處理請求的函數。getHandlerAapter 部分源碼如下。

  • [java]view plain

  • (Objecthandler)throwsServletException{

  • for(HandlerAdapterha:this.handlerAdapters){

  • if(logger.isTraceEnabled()){

  • logger.trace("Testinghandleradapter["+ha+"]");

  • }

  • 是否支持處理當前的HandlerMapper

  • if(ha.supports(handler)){

  • returnha;

  • }

  • }

  • 當前的HandlerMapper不能被處理報異常

  • thrownewServletException("Noadapterforhandler["+handler+

  • "]:ortsthishandler");

  • }

  • Model到視圖,SpringMVC 中ModelAndView保存了邏輯視圖與真實視圖的關系,確定了當前請求為用戶返回的View,processDispatchResult 源碼分析如下。

  • [java]view plain

  • (HttpServletRequestrequest,HttpServletResponseresponse,

  • ,ModelAndViewmv,Exceptionexception)throwsException{

  • booleanerrorView=false;

  • /*處理異常信息*/

  • if(exception!=null){

  • if(){

  • logger.debug("",exception);

  • mv=((ModelAndViewDefiningException)exception).getModelAndView();

  • }

  • else{

  • Objecthandler=(mappedHandler!=null?mappedHandler.getHandler():null);

  • mv=processHandlerException(request,response,handler,exception);

  • errorView=(mv!=null);

  • }

  • }

  • /*渲染視圖,返回響應*/

  • if(mv!=null&&!mv.wasCleared()){

  • render(mv,request,response);

  • if(errorView){

  • WebUtils.clearErrorRequestAttributes(request);

  • }

  • }

  • else{

  • if(logger.isDebugEnabled()){

  • logger.debug("'"+getServletName()+

  • "':");

  • }

  • }

  • }

熱點內容
伺服器怎麼設置電腦遠程埠 發布:2025-07-03 16:28:46 瀏覽:71
電信無線路由器官方密碼是什麼 發布:2025-07-03 16:25:00 瀏覽:772
空間只能申請訪問 發布:2025-07-03 16:23:27 瀏覽:735
華碩天選2air配置如何選擇 發布:2025-07-03 16:10:09 瀏覽:571
asp搜索源碼 發布:2025-07-03 15:49:55 瀏覽:235
醫美大資料庫 發布:2025-07-03 15:47:07 瀏覽:357
c語言將二進制轉化為十進制 發布:2025-07-03 15:32:47 瀏覽:988
c語言幫助文檔 發布:2025-07-03 15:22:43 瀏覽:320
雙埠存儲器在情況下會發生讀寫沖突 發布:2025-07-03 15:12:54 瀏覽:271
快站資料庫 發布:2025-07-03 14:45:44 瀏覽:40