from表單上傳單個文件的方法。 分爲三個部分,簡單演示。
一部分 表單上傳文件html
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/8/9 Time: 9:41 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <%-- 1.from標籤中 指定路徑 post提交 2.enctype屬性:上傳文件類型的數據 3.multipart/form-data 多媒體表單數據的格式 4.type file 瀏覽本地文件 --%> <body> <form method="post" action="../shang" enctype="multipart/form-data"> <div> 文件<input type="file" name="file01"> </div> <div> <input type="submit" value="提交"> </div> </form> </body> </html>
二部分 後臺控制器java
package com.aaa.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; @Controller public class DemoShangChuang { @RequestMapping("/demo") public String upload(@RequestParam("file12") MultipartFile file,Model model, HttpServletRequest request) throws IOException { //先判斷 上傳的文件是否爲空! if (!file.isEmpty()) { //1.明確目標位置 是一個絕對路徑 將文件傳送到的地方? String path = request.getSession().getServletContext().getRealPath("/static/upload"); //2. 2.1獲取原始的文件名 2.2也能夠自定義文件名(根據時間戳) String fileName = file.getOriginalFilename(); //9.新的文件名? 文件名+文件後綴 //新的文件名的 名字 經過日期函數 生成 //只須要 舊的文件名的後綴。 . 之後的文件 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String prefix = simpleDateFormat.format(new Date()); String suffix = fileName.substring(fileName.lastIndexOf(".")); String newfilename = prefix + suffix; // System.out.println("新的文件名"+newfilename); //3.目標文件的對象。 File file1 = new File(path + "/" + newfilename); //4.獲取父級文件,判斷是否存在 沒有就建立目錄 if (!file1.getParentFile().exists()) { file1.mkdirs(); } //8.目標文件存在 就不要讓他存在 就是說 不存在的文件 才讓他上傳。 注意 用了時間戳之後,同一文件名會不斷修改,能夠重複上傳。 if (!file1.exists()) { //5.傳輸文件的方法 file.transferTo(file1); //6.將數據封裝到model裏面 而後再ok.jsp 經過 「上傳文件:${file}」 知道上傳的是那個文件 model.addAttribute("file", newfilename); } } else { // 上傳的是空文件 提示用戶! model.addAttribute("file", "上傳文件爲空"); } //7.跳轉到指定的頁面。 return "view/ok"; } }
3、jsp 接收部分web
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/8/5 Time: 16:25 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>接收文件</title> </head> <body> <%-- 在jsp頁面接收 咱們上傳的文件名。 --%> 上傳文件:${file} <%--將文件的路徑放在這裏 就能夠將上傳的文件下載。 --%> <a href="http://localhost:8848/zxf/static/upload/8.png">下載8.png</a> </body> </html>