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

springmvcftp上傳

發布時間: 2022-08-28 06:27:06

『壹』 spring mvc 上傳文件到指定文件夾 代碼 {使用file 瀏覽文件 }

步驟:1,導入文件上傳jar包
2,配置

<!-- 支持上傳文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
3,jsp:<form action="xxx" method="post" enctype="multipart/form-data">
4.public String StartAdd(@RequestParam("files") MultipartFile file),其中files是jsp<input type="file" name="files"/>中的name名
5.
String hzstr = file.getOriginalFilename();//得到文件名稱
hzstr = hzstr.substring(hzstr.lastIndexOf("."));//獲取後綴名
File filenew = new File(uploadFile + "\\" + guidFile + hzstr);//指定文件夾
file.transferTo(filenew);

『貳』 spring mvc 怎麼實現上傳文件

在springmvc配置文件中這樣配置:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 編碼設置 -->
<property name="defaultEncoding" value="utf-8"/>
<!-- 上傳文件大小 -->
<property name="maxUploadSize" value="-1"/>
<!--推遲文件解析,以便在UploadAction中捕獲文件大小異常-->
<property name="resolveLazily" value="true"/>
</bean>
頁面:
<form action="upload.action" method="post" enctype="multipart/form-data">
<input type="file" name="fileUpload" />
<input type="submit" value="上傳" />
</form>

後台:
@Controller
public class UploadAction implements ServletContextAware {
private ServletContext context;
@RequestMapping("/upload")
public String upload(HttpServletRequest request) throws Exception{
//轉換請求為文件上傳請求
MultipartHttpServletRequest mrequest=(MultipartHttpServletRequest)request;
MultipartFile mfile=mrequest.getFile("file");
if(!mfile.isEmpty()){//判斷文件是否為空
path=context.getRealPath("/upload")+File.separator+mfile.getOriginalFilename();
File file=new File(path);
mfile.transferTo(file);//保存文件
}
return "跳轉頁面";
}}

『叄』 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。

『肆』 求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>

『伍』 springmvc怎麼將上傳本地文件到文件伺服器

web文件上傳採用post的方式,與post提交表單不同的是,上傳文件需要設置form的enctype屬性為multipart/form-data.由於上傳的文件會比較大,因此需要設置該參數指定瀏覽器使用二進制上傳。如果不設置,enctype屬性默認為application/x-www-form-urlencoded,使用瀏覽器將使用ascii向伺服器發送數據,導致發送文件失敗。
上傳文件要使用文件域(
,並把form的enctype設置為multipart/form-data.

『陸』 springmvc怎麼上傳文件

spring mvc(註解)上傳文件的簡單例子,這有幾個需要注意的地方
1.form的enctype=」multipart/form-data」 這個是上傳文件必須的
2.applicationContext.xml中 <bean id=」multipartResolver」 class=」org.springframework.web.multipart.commons.CommonsMultipartResolver」/> 關於文件上傳的配置不能少

大家可以看具體代碼如下:

web.xml
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>webtest</display-name>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext.xml
/WEB-INF/config/codeifAction.xml
</param-value>
</context-param>

<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/codeifAction.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 攔截所有以do結尾的請求 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.do</welcome-file>
</welcome-file-list>
</web-app>

applicationContext.xml
[html] view plain
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="true">

<!-- 啟動Spring MVC的註解功能,完成請求和註解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation." lazy-init="false" />

<!-- 另外最好還要加入,不然會被 XML或其它的映射覆蓋! -->
<bean class="org.springframework.web.servlet.mvc.annotation." />

<!-- 對模型視圖名稱的解析,即在模型視圖名稱添加前後綴 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />

<!-- 支持上傳文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

</beans>

codeifAction.xml
[html] view plain
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="true">

<bean id="uploadAction" class="com.codeif.action.UploadAction" />

</beans>

UploadAction.java
[java] view plain
package com.codeif.action;

import java.io.File;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

@Controller
public class UploadAction {

@RequestMapping(value = "/upload.do")
public String upload(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, ModelMap model) {

System.out.println("開始");
String path = request.getSession().getServletContext().getRealPath("upload");
String fileName = file.getOriginalFilename();
// String fileName = new Date().getTime()+".jpg";
System.out.println(path);
File targetFile = new File(path, fileName);
if(!targetFile.exists()){
targetFile.mkdirs();
}

//保存
try {
file.transferTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
}
model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName);

return "result";
}

}

index.jsp
[html] view plain
<%@ page pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>上傳圖片</title>
</head>
<body>
<form action="upload.do" method="post" enctype="multipart/form-data">
<input type="file" name="file" /> <input type="submit" value="Submit" /></form>
</body>
</html>

WEB-INF/jsp/下的result.jsp
[html] view plain
<%@ page pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>上傳結果</title>
</head>
<body>
<img alt="" src="${fileUrl }" />
</body>
</html>

『柒』 springmvc 怎麼將文件上傳到linux伺服器

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"
p:uploadTempDir="upload/temp"
/>

defaultEncoding必須和用戶JSP的pageEncoding屬性一致,以便正確讀取表單的內容。uploadTempDir是文件上傳過程所使用的臨時目錄,文件上傳完成後,臨時目錄中的臨時文件會被自動清除。
第二步:編寫文件上傳表單頁面和控制器
JSP頁面如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<h1>選擇上傳文件</h1>
<form action="<%=basePath%>user/upload.do" method="post" enctype="multipart/form-data">
文件名:<input type="text" name="name" /><br/>
<input type="file" name="file" /><br/>
<input type="submit" />
</form>
</body>
</html>

注意:負責上傳的表單和一般表單有一些區別,表單的編碼類型必須是"Multipart/form-data"
控制器UserController如下:

package com.web;

import java.io.File;
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;
@Controller
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "/upload.do")
public String updateThumb(@RequestParam("name") String name,
@RequestParam("file") MultipartFile file)
throws IllegalStateException, IOException {
if (!file.isEmpty()) {
file.transferTo(new File("d:/temp/"
+ name
+ file.getOriginalFilename().substring(
file.getOriginalFilename().lastIndexOf("."))));
return "redirect:success.html";
} else {
return "redirect:fail.html";
}
}
}

Spring MVC會將上傳文件綁定到MultipartFile對象中。MultipartFile提供了獲取上傳文件內容、文件名等內容,通過transferTo方法還可將文件存儲到硬體中,具體說明如下:
byte[] getBytes() :獲取文件數據
String getContentType():獲取文件MIME類型,如image/pjpeg、text/plain等
InputStream getInputStream():獲取文件流
String getName():獲取表單中文件組件的名字
String getOriginalFilename():獲取上傳文件的原名
long getSize():獲取文件的位元組大小,單位為byte
boolean isEmpty():是否有上傳的文件
void transferTo(File dest):可以使用該文件將上傳文件保存到一個目標文件中
源碼:uploadtest.zip

『捌』 Springmvc的幾種多附件上傳方式

1.單文件上傳

1.1、頁面

文件上傳需要將表單的提交方法設置為post,將enctype的值設置為」multipart/form-data」。

<form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data">
<input type="file" name="img"><br />
<input type="submit" name="提交">
</form>
1.2 控制器
@Controller
@RequestMapping("/test")
public class MyController {

@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
// 這里的MultipartFile對象變數名跟表單中的file類型的input標簽的name相同,
//所以框架會自動用MultipartFile對象來接收上傳過來的文件,
//當然也可以使用@RequestParam("img")指定其對應的參數名稱
public String upload(MultipartFile img, HttpSession session)
throws Exception {
// 如果沒有文件上傳,MultipartFile也不會為null,可以通過調用getSize()方法獲取文件的大小來判斷是否有上傳文件
if (img.getSize() > 0) {
// 得到項目在伺服器的真實根路徑,如:/home/tomcat/webapp/項目名/images
String path = session.getServletContext().getRealPath("images");
// 得到文件的原始名稱,如:美女.png
String fileName = img.getOriginalFilename();
// 通過文件的原始名稱,可以對上傳文件類型做限制,如:只能上傳jpg和png的圖片文件
if (fileName.endsWith("jpg") || fileName.endsWith("png")) {
File file = new File(path, fileName);
img.transferTo(file);
return "/success.jsp";
}
}
return "/error.jsp";
}
}
1.3springmvc.xml配置
<!-- 注意:CommonsMultipartResolver的id是固定不變的,一定是multipartResolver,不可修改 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 如果上傳後出現文件名中文亂碼可以使用該屬性解決 -->
<property name="defaultEncoding" value="utf-8"/>
<!-- 單位是位元組,不設置默認不限制總的上傳文件大小,這里設置總的上傳文件大小不超過1M(1*1024*1024) -->
<property name="maxUploadSize" value="1048576"/>
<!-- 跟maxUploadSize差不多,不過maxUploadSizePerFile是限制每個上傳文件的大小,而maxUploadSize是限制總的上傳文件大小 -->
<property name="maxUploadSizePerFile" value="1048576"/>
</bean>
2.多文件上傳

2.1頁面
<form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data">
file 1 : <input type="file" name="imgs"><br />
file 2 : <input type="file" name="imgs"><br />
file 3 : <input type="file" name="imgs"><br />
<input type="submit" name="提交">
</form>
2.2控制器
@Controller
@RequestMapping("/test")
public class MyController {

@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
// 這里的MultipartFile[] imgs表示前端頁面上傳過來的多個文件,imgs對應頁面中多個file類型的input標簽的name,
// 但框架只會將一個文件封裝進一個MultipartFile對象,
// 並不會將多個文件封裝進一個MultipartFile[]數組,直接使用會報[Lorg.springframework.web.multipart.MultipartFile;.<init>()錯誤,
// 所以需要用@RequestParam校正參數(參數名與MultipartFile對象名一致),當然也可以這么寫:@RequestParam("imgs") MultipartFile[] files。
public String upload(@RequestParam MultipartFile[] imgs, HttpSession session)
throws Exception {
for (MultipartFile img : imgs) {
if (img.getSize() > 0) {
String path = session.getServletContext().getRealPath("images");
String fileName = img.getOriginalFilename();
if (fileName.endsWith("jpg") || fileName.endsWith("png")) {
File file = new File(path, fileName);
img.transferTo(file);
}
}
}
return "/success.jsp";
}
}
2.3springmvc.xml配置
<!-- 注意:CommonsMultipartResolver的id是固定不變的,一定是multipartResolver,不可修改 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 如果上傳後出現文件名中文亂碼可以使用該屬性解決 -->
<property name="defaultEncoding" value="utf-8"/>
<!-- 單位是位元組,不設置默認不限制總的上傳文件大小,這里設置總的上傳文件大小不超過1M(1*1024*1024) -->
<property name="maxUploadSize" value="1048576"/>
<!-- 跟maxUploadSize差不多,不過maxUploadSizePerFile是限制每個上傳文件的大小,而maxUploadSize是限制總的上傳文件大小 -->
<property name="maxUploadSizePerFile" value="1048576"/>
</bean>

擴展:
/*
* 通過流的方式上傳文件
* @RequestParam("file") 將name=file控制項得到的文件封裝成CommonsMultipartFile 對象
*/

/*
* 採用file.Transto 來保存上傳的文件
*/

/*
*採用spring提供的上傳文件的方法
*/

『玖』 springmvc怎麼實現多文件上傳

多文件上傳其實很簡單,和上傳其他相同的參數如checkbox一樣,表單中使用相同的名稱,然後action中將MultipartFile參數類定義為數組就可以。
接下來實現:
1、創建一個上傳多文件的表單:
在CODE上查看代碼片派生到我的代碼片
<body>
<h2>上傳多個文件 實例</h2>
<form action="filesUpload.html" method="post"
enctype="multipart/form-data">
<p>
選擇文件:<input type="file" name="files">
<p>
選擇文件:<input type="file" name="files">
<p>
選擇文件:<input type="file" name="files">
<p>
<input type="submit" value="提交">
</form>
</body>
2、編寫處理表單的action,將原來保存文件的方法單獨寫一個方法出來方便共用:
[java] view plain
print?在CODE上查看代碼片派生到我的代碼片
/***
* 保存文件
* @param file
* @return
*/
private boolean saveFile(MultipartFile file) {
// 判斷文件是否為空
if (!file.isEmpty()) {
try {
// 文件保存路徑
String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"
+ file.getOriginalFilename();
// 轉存文件
file.transferTo(new File(filePath));
return true;
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
3、編寫action:
@RequestMapping("filesUpload")
public String filesUpload(@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];
//保存文件
saveFile(file);
}
}
// 重定向
return "redirect:/list.html";
}

熱點內容
如何升級安卓系統51 發布:2024-10-13 08:24:59 瀏覽:634
ftp命令下載文件更新時間不變 發布:2024-10-13 08:15:48 瀏覽:132
為什麼虛幻引擎無法編譯該項目 發布:2024-10-13 08:11:04 瀏覽:593
我的世界mc腦洞君的伺服器 發布:2024-10-13 07:40:25 瀏覽:304
怎麼配置nfc門禁卡 發布:2024-10-13 07:38:53 瀏覽:47
微信加粉腳本 發布:2024-10-13 07:33:54 瀏覽:415
蘋果手機卡怎麼裝到安卓機 發布:2024-10-13 07:33:53 瀏覽:575
linuxvarlog 發布:2024-10-13 07:33:19 瀏覽:846
安卓版98c哪裡下載 發布:2024-10-13 07:12:31 瀏覽:121
安卓提醒怎麼關閉不了 發布:2024-10-13 07:01:09 瀏覽:922