from 表單上傳文件和下載?

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>
相關文章
相關標籤/搜索