国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java spring-boot項目中如何上傳下載文件或圖片到spring-boot規(guī)定的非靜態(tài)目錄

這篇具有很好參考價值的文章主要介紹了Java spring-boot項目中如何上傳下載文件或圖片到spring-boot規(guī)定的非靜態(tài)目錄。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

問題

  • spring-boot的項目,雖然它自己定義了一個靜態(tài)文件的存儲目錄,但是這個目錄一般是作為前端靜態(tài)文件的目錄來作為使用的。如果使用這個靜態(tài)目錄來作為我們上傳文件的目錄會有一個比較尷尬的地方:將spring-boot打包成為jar包后,隨著上傳圖片的增多,這個jar包也會跟著變大,而且,在jar包中的圖片要單獨取出來查看或者編輯都極不方便。
  • 因此我們需要另外定義一個文件目錄來單獨存儲我們上傳文件的目錄。
  • 這里是基礎教學,大神請繞路,如果看到后有什么比較好的意見也歡迎評論區(qū)指出。以下以自己的一個個人項目來作為演示,有不清楚或有什么問題的地方,也請評論區(qū)指出。

上傳

此處的范圍類型 AjaxResult 是一個繼承 HashMap 類,從若依框架上拿過來的。至于包名,我也沒改,自己改一下吧

HttpStatus 類

package com.example.xixieguan.utils;


/**
 * 返回狀態(tài)碼
 *
 * @author ruoyi
 */
public class HttpStatus
{
    /**
     * 操作成功
     */
    public static final int SUCCESS = 200;

    /**
     * 對象創(chuàng)建成功
     */
    public static final int CREATED = 201;

    /**
     * 請求已經(jīng)被接受
     */
    public static final int ACCEPTED = 202;

    /**
     * 操作已經(jīng)執(zhí)行成功,但是沒有返回數(shù)據(jù)
     */
    public static final int NO_CONTENT = 204;

    /**
     * 資源已被移除
     */
    public static final int MOVED_PERM = 301;

    /**
     * 重定向
     */
    public static final int SEE_OTHER = 303;

    /**
     * 資源沒有被修改
     */
    public static final int NOT_MODIFIED = 304;

    /**
     * 參數(shù)列表錯誤(缺少,格式不匹配)
     */
    public static final int BAD_REQUEST = 400;

    /**
     * 未授權
     */
    public static final int UNAUTHORIZED = 401;

    /**
     * 訪問受限,授權過期
     */
    public static final int FORBIDDEN = 403;

    /**
     * 資源,服務未找到
     */
    public static final int NOT_FOUND = 404;

    /**
     * 不允許的http方法
     */
    public static final int BAD_METHOD = 405;

    /**
     * 資源沖突,或者資源被鎖
     */
    public static final int CONFLICT = 409;

    /**
     * 不支持的數(shù)據(jù),媒體類型
     */
    public static final int UNSUPPORTED_TYPE = 415;

    /**
     * 系統(tǒng)內(nèi)部錯誤
     */
    public static final int ERROR = 500;

    /**
     * 接口未實現(xiàn)
     */
    public static final int NOT_IMPLEMENTED = 501;

    /**
     * 系統(tǒng)警告消息
     */
    public static final int WARN = 601;
}


AjaxResult類

package com.example.xixieguan.utils;
import java.util.HashMap;
public class AjaxResult extends HashMap<String, Object>
{
    private static final long serialVersionUID = 1L;

    /** 狀態(tài)碼 */
    public static final String CODE_TAG = "code";

    /** 返回內(nèi)容 */
    public static final String MSG_TAG = "msg";

    /** 數(shù)據(jù)對象 */
    public static final String DATA_TAG = "data";

    /**
     * 初始化一個新創(chuàng)建的 AjaxResult 對象,使其表示一個空消息。
     */
    public AjaxResult()
    {
    }

    /**
     * 初始化一個新創(chuàng)建的 AjaxResult 對象
     *
     * @param code 狀態(tài)碼
     * @param msg 返回內(nèi)容
     */
    public AjaxResult(int code, String msg)
    {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
    }

    /**
     * 初始化一個新創(chuàng)建的 AjaxResult 對象
     *
     * @param code 狀態(tài)碼
     * @param msg 返回內(nèi)容
     * @param data 數(shù)據(jù)對象
     */
    public AjaxResult(int code, String msg, Object data)
    {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
//        super.put(DATA_TAG, data);
        if (data!=null)
        {
            super.put(DATA_TAG, data);
        }
    }

    /**
     * 返回成功消息
     *
     * @return 成功消息
     */
    public static AjaxResult success()
    {
        return AjaxResult.success("操作成功");
    }

    /**
     * 返回成功數(shù)據(jù)
     *
     * @return 成功消息
     */
    public static AjaxResult success(Object data)
    {
        return AjaxResult.success("操作成功", data);
    }

    /**
     * 返回成功消息
     *
     * @param msg 返回內(nèi)容
     * @return 成功消息
     */
    public static AjaxResult success(String msg)
    {
        return AjaxResult.success(msg, null);
    }

    /**
     * 返回成功消息
     *
     * @param msg 返回內(nèi)容
     * @param data 數(shù)據(jù)對象
     * @return 成功消息
     */
    public static AjaxResult success(String msg, Object data)
    {
        return new AjaxResult(HttpStatus.SUCCESS, msg, data);
    }

    /**
     * 返回警告消息
     *
     * @param msg 返回內(nèi)容
     * @return 警告消息
     */
    public static AjaxResult warn(String msg)
    {
        return AjaxResult.warn(msg, null);
    }

    /**
     * 返回警告消息
     *
     * @param msg 返回內(nèi)容
     * @param data 數(shù)據(jù)對象
     * @return 警告消息
     */
    public static AjaxResult warn(String msg, Object data)
    {
        return new AjaxResult(HttpStatus.WARN, msg, data);
    }

    /**
     * 返回錯誤消息
     *
     * @return 錯誤消息
     */
    public static AjaxResult error()
    {
        return AjaxResult.error("操作失敗");
    }

    /**
     * 返回錯誤消息
     *
     * @param msg 返回內(nèi)容
     * @return 錯誤消息
     */
    public static AjaxResult error(String msg)
    {
        return AjaxResult.error(msg, null);
    }

    /**
     * 返回錯誤消息
     *
     * @param msg 返回內(nèi)容
     * @param data 數(shù)據(jù)對象
     * @return 錯誤消息
     */
    public static AjaxResult error(String msg, Object data)
    {
        return new AjaxResult(HttpStatus.ERROR, msg, data);
    }

    /**
     * 返回錯誤消息
     *
     * @param code 狀態(tài)碼
     * @param msg 返回內(nèi)容
     * @return 錯誤消息
     */
    public static AjaxResult error(int code, String msg)
    {
        return new AjaxResult(code, msg, null);
    }

    /**
     * 方便鏈式調(diào)用
     *
     * @param key 鍵
     * @param value 值
     * @return 數(shù)據(jù)對象
     */
    @Override
    public AjaxResult put(String key, Object value)
    {
        super.put(key, value);
        return this;
    }
}

controller類

package com.example.xixieguan.controller;

import com.example.xixieguan.utils.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

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.util.UUID;

@RestController
@RequestMapping("/api")
public class FileUploadController {
    private String separator = File.separator;//獲取操作系統(tǒng)的文件分隔符
    @Autowired
    private ResourceLoader resourceLoader;
    @PostMapping("/upload")
    public AjaxResult upload(@RequestParam("file") MultipartFile file) throws IOException {
        // 判斷是否為空文件
        AjaxResult ajaxResult = AjaxResult.error();
        ajaxResult.put("msg","上傳失敗");
        if (file.isEmpty()) {
            return ajaxResult;
        }
        // 獲取文件名
        String fileName = file.getOriginalFilename();
        // 獲取文件后綴
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        // 重新生成文件名
        fileName = UUID.randomUUID() + suffixName;
        // 設置文件存儲路徑

        Path currentDir = Paths.get("images");
        Path filePath = currentDir.toAbsolutePath();
        if (!Files.exists(filePath)) {
            Files.createDirectory(filePath);
        }
        File dest = new File(filePath + separator  + fileName);
        try {
            // 保存文件
            file.transferTo(dest);
            ajaxResult = AjaxResult.success();
            ajaxResult.put("msg","上傳成功");
            return ajaxResult;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ajaxResult;
    }
    
}

添加web配置類

  • 建議添加在config包下
  • images是我自己定義用來存儲上傳文件的目錄名,你可以根據(jù)自己的需求來定制。但是需要注意的是在上傳的時候也需要是同樣的目錄名,不然會出現(xiàn)找不到目錄的尷尬場面。
package com.example.xixieguan.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class StaticResourceConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**")
                .addResourceLocations("file:./images/");
    }
}

完成以上兩步,已經(jīng)可以將圖片上傳到自定義的目錄位置了,如果不行的話,在application.yml中再添加一項配置

application.yml

spring:
  web:
    resources:
      static-locations: file:./image/

通過上述方式,已經(jīng)基本可以完成 Java spring-boot項目上傳下載文件或圖片的功能需求,關鍵在于不用將文件放置到spring-boot的靜態(tài)目錄下了。減少了維護的麻煩事兒。文章來源地址http://www.zghlxwxcb.cn/news/detail-587658.html

到了這里,關于Java spring-boot項目中如何上傳下載文件或圖片到spring-boot規(guī)定的非靜態(tài)目錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • minio + linux + docker + spring boot實現(xiàn)文件上傳與下載

    minio + linux + docker + spring boot實現(xiàn)文件上傳與下載

    檢查linux內(nèi)核,必須是3.10以上 安裝docker 啟動docker 搜索鏡像 拉取鏡像 啟動minio -p: 指定端口映射,格式為:主機端口:容器端口 (這里注意要映射兩個,否則API會訪問不到) -e “MINIO_ROOT_USER=vinci” minio用戶名; -e MINIO_SECRET_KEY=123456 minio 密碼 -d: 后臺運行容器,并返回容器ID; -

    2024年02月07日
    瀏覽(27)
  • 2023 最新版IntelliJ IDEA 2023.1創(chuàng)建Java Web前(vue3)后端(spring-boot3)分離 項目詳細步驟(圖文詳解)

    2023 最新版IntelliJ IDEA 2023.1創(chuàng)建Java Web前(vue3)后端(spring-boot3)分離 項目詳細步驟(圖文詳解)

    2023 最新版IntelliJ IDEA 2023.1創(chuàng)建Java Web 項目詳細步驟(圖文詳解) 本篇使用當前Java Web開發(fā)主流的spring-boot3框架來創(chuàng)建一個Java前后端分離的項目,前端使用的也是目前前端主流的vue3進行一個簡單的項目搭建,讓你距離Java全棧開發(fā)更近一步 ?????。 使用版本: “17.0.1”

    2024年02月12日
    瀏覽(33)
  • Grafana+Prometheus技術文檔-進階使用-監(jiān)控spring-boot項目

    Grafana+Prometheus技術文檔-進階使用-監(jiān)控spring-boot項目

    阿丹: ? ? ? ? 之前已經(jīng)實現(xiàn)了使用Prometheus來對服務器進行了監(jiān)控和儀表盤的創(chuàng)建,現(xiàn)在就需要對這些監(jiān)控方法使用在spring-boot中去。 ? ? ? ? 1、集成Actuator ? ? ? ? 2、加入Prometheus的依賴 ? ? ? ? 3、配置開放端口、以及開放監(jiān)控 ? ? ? ? 4、配置Prometheus中的配置 ? ? ?

    2024年02月13日
    瀏覽(31)
  • 基于Java (spring-boot)的圖書管理系統(tǒng)

    基于Java (spring-boot)的圖書管理系統(tǒng)

    一、項目介紹 該圖書管理系統(tǒng)提供了一系列功能,包括圖書管理、圖書類型管理、讀者借閱歸還圖書、用戶管理和重置密碼等。 在圖書管理功能中,管理員可以方便地進行圖書信息的管理。他們可以添加新的圖書記錄,包括書名、作者、出版社、ISBN等信息,并可以對已有的

    2024年02月04日
    瀏覽(33)
  • github下載的項目如何上傳到gitee

    github下載的項目如何上傳到gitee

    省略 ? 如何注冊、登錄省略 ? 省略 iot-plat創(chuàng)建過了,用iot-plat1演示 此處的https地址要記住,等會要用到 項目里面 空白處右鍵,選中 Git Bash Here 配置用戶名和郵箱? 全局操作,配置過的,就不用配置了,可以略過 初始化本地倉庫 ?添加項目文件至本地倉庫 提交添加注釋 fi

    2024年02月09日
    瀏覽(25)
  • spring-boot項目啟動類錯誤: 找不到或無法加載主類 com.**Application

    spring-boot項目啟動類錯誤: 找不到或無法加載主類 com.**Application

    問題:Springboot項目啟動報錯:錯誤: 找不到或無法加載主類 com.**Application 解決步驟: 1.File–Project Structure 2.Modules–選中你的項目–點擊“-”移除 3.重新導入:點擊“+”號,選擇Import Module,找到項目所在路徑,選中要導入的項目,點擊OK。 選擇maven,點擊ok 4.重新編譯:點擊

    2024年04月17日
    瀏覽(27)
  • Docker 部署spring-boot項目(超詳細 包括Docker詳解、Docker常用指令整理等)

    Docker 部署spring-boot項目(超詳細 包括Docker詳解、Docker常用指令整理等)

    大家好!我是夏小花,今天是 2023年10月29日|農(nóng)歷九月十五 ,轉(zhuǎn)眼間,馬上進入到十一月份,最近這段時間一直在項目上沒有更新文章,話不多說,今天這篇博文主要是 簡單了解一下docker、dockerfile的使用、docker部署spring-boot項目以及一些docker常用的指令 ,本篇文章中如果有不

    2024年02月08日
    瀏覽(22)
  • spring-boot定時任務

    spring-boot定時任務

    定時任務規(guī)則:0? *? *? * ? *? * 表示任意月的任意周的每天的每時的每分的0秒開始一次任務。 任務加在方法上? 開始一次任務 表示 啟動?一次方法。 0/5 *? *? 5? *? 4? 表示 每月的最后一周的第五天的任意時任意分的0秒開始 每隔5秒啟動一次任務。 定時任務表達式 還有很

    2024年01月21日
    瀏覽(32)
  • Spring MVC異步上傳、跨服務器上傳和文件下載

    Spring MVC異步上傳、跨服務器上傳和文件下載

    之前的上傳方案,在上傳成功后都會跳轉(zhuǎn)頁面。而在實際開發(fā)中,很多情況下上傳后不進行跳轉(zhuǎn),而是進行頁面的局部刷新,比如:上傳頭像成功后將頭像顯示在網(wǎng)頁中。這時候就需要使用異步文件上傳。 編寫JSP頁面,引入jQuery和jQuery表單上傳工具jquery.form.js【該js文件已經(jīng)

    2024年02月16日
    瀏覽(31)
  • spring-boot 依賴注入流程

    一、基本使用 主要是三個注解的使用,@Autowired,@Value,@Resource 二、實現(xiàn)步驟 攔截bean的創(chuàng)建 要想攔截bean,就需要處理spring bean生命周期事件,spring通過一些接口來處理事件,實現(xiàn)屬性注入,需要 InstantiationAwareBeanPostProcessor接口來完成。 找到注解的字段,并注入值 獲取被注

    2024年02月03日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包