基于springboot的文件上傳

文件上傳方式

  • 直接上傳到應用服務器
  • 上傳到oss(阿里云静尼,七牛云)
  • 前端將圖片轉成Base64編碼上傳

上傳服務器的一個例子

import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/*
* 上傳文件控制器
* 直接上傳到服務器
* 2019.3.25
* */
@Controller
public class UploadController {
    SimpleDateFormat YYY = new SimpleDateFormat("yyyy-MM-dd");
    @GetMapping("/")
    public String index(){
        return "upload";
    }
    @PostMapping("/upload")
    public  String fileUpload(@RequestParam("file")MultipartFile srcFile, RedirectAttributes redirectAttributes){
        //前端沒有選擇文件鼠渺,srcFile為空
        if(srcFile.isEmpty()){
            redirectAttributes.addFlashAttribute("message","請選擇一個文件");
            return "redirect:upload_status";
        }
        //選擇了文件拦盹,開始進行上傳操作
        try{
            //構建上傳目標路徑
            File destFile=new File(ResourceUtils.getURL("classpath:").getPath());
            if(!destFile.exists()){
                destFile=new File("");
            }
            //輸出目標文件的絕對路徑
            System.out.println("file path:"+destFile.getAbsolutePath());
            File upload=new File(destFile.getAbsolutePath(),YYY.format(new Date())+"/");
            //拼接static目錄
            String fileName= srcFile.getOriginalFilename();
            String suffixName = fileName.substring(fileName.lastIndexOf("."));
            fileName= UUID.randomUUID() +suffixName;
            //若目標文件夾不存在溪椎,則創(chuàng)建一個
            if(!upload.exists()){
                upload.mkdirs();
            }
            System.out.println("完整的上傳路徑:"+upload.getAbsolutePath()+"/"+srcFile.getOriginalFilename());
            //根據(jù)srcFile的大小,準備一個字節(jié)數(shù)組
            byte[] bytes=srcFile.getBytes();
            //拼接上傳路徑
            /*Path path= Paths.get(UPLOAD_FOLDER+srcFile.getOriginalFilename());*/
            //通過項目路徑沼侣,拼接上傳路徑
            Path path=Paths.get(upload.getAbsolutePath()+"/"+srcFile.getOriginalFilename());
            //最重要的一步歉秫,將源文件寫入目標地址
            Files.write(path,bytes);
            //將文件上傳成功的信息寫入messages
            redirectAttributes.addFlashAttribute("message","文件上傳成功"+srcFile.getOriginalFilename());

        }catch (IOException e){
            e.printStackTrace();
        }
        return "redirect:upload_status";
    }
    //匹配
    @GetMapping("/upload_status")
    public String uploadStatusPage(){
        return "upload_status";
    }
}
    <title>Spring Boot 文件上傳頁面</title>
</head>
<body>
<form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上傳">
</form>
    <title>文件上傳狀態(tài)顯示</title>
</head>
<body>
<h2>Spring Boot的文件上傳狀態(tài)</h2>
<div th:if="${message}">
    <h2 th:text="${message}"/>
</div>
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末轧膘,一起剝皮案震驚了整個濱河市兔甘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裂明,老刑警劉巖太援,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件提岔,死亡現(xiàn)場離奇詭異笋敞,居然都是意外死亡,警方通過查閱死者的電腦和手機赛惩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門趁餐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來后雷,“玉大人,你說我怎么就攤上這事臀突。” “怎么了藕筋?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵梳码,是天一觀的道長边翁。 經(jīng)常有香客問我,道長符匾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮焰坪,結果婚禮上,老公的妹妹穿的比我還像新娘儒恋。我一直安慰自己,他們只是感情好诫尽,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布牧嫉。 她就那樣靜靜地躺著,像睡著了一般曹洽。 火紅的嫁衣襯著肌膚如雪辽剧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音砖第,去河邊找鬼。 笑死放吩,一個胖子當著我的面吹牛羽杰,可吹牛的內容都是我干的。 我是一名探鬼主播惕澎,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颜骤,長吁一口氣:“原來是場噩夢啊……” “哼忍抽!你這毒婦竟也來了?” 一聲冷哼從身側響起鸠项,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤祟绊,失蹤者是張志新(化名)和其女友劉穎哥捕,沒想到半個月后浅辙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡鸽捻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年泽腮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厚满。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡碘箍,死狀恐怖鲸郊,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情秆撮,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布盗蟆,位于F島的核電站舒裤,受9級特大地震影響喳资,放射性物質發(fā)生泄漏。R本人自食惡果不足惜腾供,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一骨饿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧台腥,春花似錦宏赘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至峻汉,卻和暖如春贴汪,著一層夾襖步出監(jiān)牢的瞬間脐往,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工业簿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阳懂。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓梅尤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親岩调。 傳聞我的和親對象是個殘疾皇子巷燥,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內容

  • 上傳文件是互聯(lián)網(wǎng)中常常應用的場景之一,最典型的情況就是上傳頭像等号枕。 主要有以下幾種方式 直接上傳到應用服務器 上傳...
    yu_liu閱讀 1,816評論 0 0
  • 文件上傳的三種方法 直接上傳到應用服務器 上傳到OSS(阿里云 七牛云) 前端將圖片轉成Base64編碼上傳 Sp...
    Rebirth_914閱讀 1,222評論 0 16
  • 三種上傳方式 直接上傳到應用服務器 上傳到oss(內容存儲在服務器)如 阿里云 七牛云 前端將圖片轉成Base64...
    youi_e050閱讀 610評論 1 4
  • 對數(shù)組的編輯包括對數(shù)組中元素的追加、插入赞厕、刪除和替換等修改操作艳狐。 1. 數(shù)組的追加 對數(shù)組元素進行添加可以使用數(shù)組...
    博為峰51Code教研組閱讀 2,223評論 0 0
  • 原文片段1 R?閱讀原文片段 《靠譜》 無論是發(fā)出指示的上司還是接受安排的屬下,都要明確以下四個要點: 1坑傅、工作的...
    jun杰閱讀 220評論 0 1