利用SpringMVC和Ajax實(shí)現(xiàn)文件上傳功能
個(gè)人根據(jù)相關(guān)資料實(shí)現(xiàn)利用SpringMVC和Ajax實(shí)現(xiàn)文件上傳功能:
環(huán)境:
1.JDK1.7
2.maven3.3.9
3.Tomcat7
第一步:
導(dǎo)入相關(guān)jar包:
第二步:
配置springmvc-config.xml
<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.lc" /> <!-- 配置視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/"></property> <property name="suffix" value=".jsp"></property> </bean> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--上傳文件的最大大小 --> <property name="maxUploadSize" value="17367648787"></property> <!-- 上傳文件的編碼 --> <property name="defaultEncoding" value="UTF-8"></property> </bean> </beans>
第三步:
配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>fileupload</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!--Springmvc的控制分發(fā)器 --> <servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
第四步:
新建一個(gè)Controller類,并實(shí)現(xiàn)文件上傳的功能
import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Random; import javax.json.Json; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.util.JSONPObject; @Controller public class FileUploadController { @RequestMapping(value = "index", method = RequestMethod.GET) public String index() { return "index"; } @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) { Map<String, String> modelMap = new HashMap<>(); if (!file.isEmpty()) { String storePath = "E://images"; Random r = new Random(); String fileName = file.getOriginalFilename(); String[] split = fileName.split(".jpg"); fileName = split[0] + r.nextInt(1000); fileName = fileName + ".jpg"; File filePath = new File(storePath, fileName); if (!filePath.getParentFile().exists()) { filePath.getParentFile().mkdirs();// 如果目錄不存在,則創(chuàng)建目錄 } try { file.transferTo(new File(storePath + File.separator + fileName));// 把文件寫入目標(biāo)文件地址 } catch (Exception e) { e.printStackTrace(); modelMap.put("back", "error"); String json = JSON.toJSONString(modelMap); return json; } modelMap.put("back", "success"); } else { modelMap.put("back", "error"); } String json = JSON.toJSONString(modelMap); return json; } }
第五步:
在WEB-INF下,新建一個(gè)pages文件夾,并創(chuàng)建實(shí)現(xiàn)文件上傳的jsp或者HTML文件(我使用的是jsp):
在index.jsp下寫入相關(guān)的ajax的方法,在使用ajax之前必須先導(dǎo)入js庫。
<body> <form id="uploadForm" enctype="multipart/form-data" method="post"> <input type="file" name="file"> </form> <br> <input type="button" id="upload" value="上傳"> </body> <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> $(function() { $('#upload').click(function() { var formData = new FormData($('#uploadForm')[0]); $.ajax({ type : 'POST', url : 'upload', data : formData, cache : false, processData : false, contentType : false, }).success(function(data) { var result = JSON.parse(data); alert(result.back); }).error(function() { alert("上傳失敗"); }); }); }); </script>
第六步:
進(jìn)行測(cè)試
上傳文件
上傳成功
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringMVC使用第三方組件實(shí)現(xiàn)文件上傳
- SpringMVC文件上傳原理及實(shí)現(xiàn)過程解析
- ssm框架Springmvc文件上傳實(shí)現(xiàn)代碼詳解
- Ajax實(shí)現(xiàn)文件上傳功能(Spring MVC)
- SpringMVC 上傳文件 MultipartFile 轉(zhuǎn)為 File的方法
- SpringMVC上傳文件并保存到本地代碼實(shí)例
- SpringMVC實(shí)現(xiàn)多文件上傳
- SpringMVC 單文件,多文件上傳實(shí)現(xiàn)詳解
- Springmvc文件上傳實(shí)現(xiàn)流程解析
相關(guān)文章
Java中的強(qiáng)引用,軟引用,弱引用,虛引用的作用介紹
這篇文章主要介紹了Java中的強(qiáng)引用,軟引用,弱引用,虛引用的作用,下文內(nèi)容具有一定的知識(shí)參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你有所幫助2022-02-02java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出
這篇文章主要介紹了java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Springboot?application.yml配置文件拆分方式
這篇文章主要介紹了Springboot?application.yml配置文件拆分方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05濫用@PathVariable導(dǎo)致bug原因分析解決
這篇文章主要為大家介紹了濫用@PathVariable導(dǎo)致bug原因分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Spark?集群執(zhí)行任務(wù)失敗的故障處理方法
這篇文章主要為大家介紹了Spark?集群執(zhí)行任務(wù)失敗的故障處理方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02關(guān)于SpringCloud整合RabbitMQ的實(shí)例
這篇文章主要介紹了關(guān)于SpringCloud整合RabbitMQ的實(shí)例,消息隊(duì)列是指利用高效可靠的消息傳遞機(jī)制進(jìn)行與平臺(tái)無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進(jìn)行分布式系統(tǒng)的集成,是在消息的傳輸過程中保存消息的容器,需要的朋友可以參考下2023-07-07