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

SpringBoot項目中前后端對圖片的上傳與接收操作

這篇具有很好參考價值的文章主要介紹了SpringBoot項目中前后端對圖片的上傳與接收操作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、問題介紹

在一個在線圖片分享系統(tǒng)中,前端使用JS+jQuery,后端使用Maven管理項目,采用分層次目錄結(jié)構(gòu)(Controller、Service、Mapper等)的一個Java語言編寫的SSM(Spring+SpringBoot+Mybatis)項目中,需要實現(xiàn)一個前端標簽上傳圖片,后端Controller層接收并處理圖片。

二、前端上傳圖片方案

1.上傳

上傳圖片的方式有很多,可以采用base64、blob等類型處理,而本文由于前端上傳圖片采用的是原生JS標簽input的file類型:

<input type="file">

這個標簽選擇文件后,圖片的路徑會顯示在這個標簽中,但直接使用這個標簽顯然是不可以獲取到圖片的(你只是訪問本地路徑可以看得見圖片,但網(wǎng)頁它不認識這個路徑所意味著的圖片文件)。

2.前端網(wǎng)頁顯示此上傳的圖片

(1)HTML代碼:

<input type="file" id="uploadimage" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg">
<img id="showimage" style="width: auto;height: 80%;" src="" alt="請上傳圖片">

屬性解釋:
<input>標簽:
id:ID屬性值,用于JS定位該標簽;
type:設(shè)置為file,提供一個可以上傳文件的按鈕;
accept:顧名思義,是限制接受的文件類型的,規(guī)定這個屬性值可限定文件類型為圖片,如.jpg、.png(高清)、.gif(動圖)、.jpeg、.svg(不推薦);
<img>標簽:
id:同上;
style:樣式設(shè)定;
src:路徑;
alt:加載圖片失敗或src為空時的默認文本。

(2)JS代碼:

 document.getElementById("uploadimage").onchange = function(){//當input標簽上傳了一個圖片時
     var file = this.files;//將當前圖片文件賦值給file變量
     var reader = new FileReader();//創(chuàng)建一個新FileReader類
     reader.readAsDataURL(file[0]);//將圖片文件傳給該FileReder
     reader.onload = function ()//加載
     {
         var image = document.getElementById("showimage");
         image.src = reader.result;
     };
 }

3.前端上傳該圖片文件

使用JS代碼處理該文件,采用FormData類型將該圖片以二進制流的形式發(fā)給后端:
JS代碼:
FormData類的使用:

var formData = new FormData();
formData.set("file", document.getElementById('uploadimage').files[0]);

使用$.ajax發(fā)送請求:

$.ajax({
    url: "images/insertOneImageFile",//后端Controller層處理圖片文件的對應(yīng)接口
    type: "post",
    data: formData,//發(fā)送的數(shù)據(jù)為FormData類
    async: false,
    cache: false,
    processData: false,   // 不處理發(fā)送的數(shù)據(jù)
    contentType: false,   // 不設(shè)置Content-Type請求頭
    success:function (data) {
        $("#path").text(data);
        console.log(data);
    },
    error: function(error){
        imagestring = "";
        alert("上傳圖片出錯!");
    }
});

4.后端處理FormData:

Controller層代碼:

    @RequestMapping("/insertOneImageFile")
    public String insertOneImageFile(HttpServletRequest request, HttpServletRequest response, HttpSession session){
        MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest) request;
        MultipartFile multipartFile = multipartRequest.getFile("file");
        assert multipartFile != null;
        MultipartFileToFile.saveMultipartFile(multipartFile, "src/main/resources/static/images");
        return MultipartFileToFile.saveMultipartFile(multipartFile, "target/classes/static/images");
    }

所使用的保存圖片到本地路徑的工具類1:MultipartFileToFile.class:
(注:本文默認已經(jīng)配置好Spring及SpringBoot環(huán)境)

package com.id.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.UUID;

/**
 * @Description 存儲和刪除MultipartFile文件
 * @Author haoyalei
 **/
public class MultipartFileToFile {

    /**
     *
     * @param file
     * @param targetDirPath 存儲MultipartFile文件的目標文件夾
     * @return 文件的存儲的絕對路徑
     */
    public static String saveMultipartFile(MultipartFile file, String targetDirPath){

        File toFile = null;
        if (file.equals("") || file.getSize() <= 0) {
            return null;
        } else {

            /*獲取文件原名稱*/
            String originalFilename = file.getOriginalFilename();
            /*獲取文件格式*/
            String fileFormat = originalFilename.substring(originalFilename.lastIndexOf("."));

            String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
            toFile = new File(targetDirPath + File.separator + uuid + fileFormat);

            String absolutePath = null;
            try {
                absolutePath = toFile.getCanonicalPath();

                /*判斷路徑中的文件夾是否存在,如果不存在,先創(chuàng)建文件夾*/
                String dirPath = absolutePath.substring(0, absolutePath.lastIndexOf(File.separator));
                File dir = new File(dirPath);
                if (!dir.exists()) {
                    dir.mkdirs();
                }

                InputStream ins = file.getInputStream();

                inputStreamToFile(ins, toFile);
                ins.close();

            } catch (IOException e) {
                e.printStackTrace();
            }



            return uuid + fileFormat;//uuid為保存時所使用的文件名;fileFormat為文件擴展名(.jsp什么的)
        }

    }

    //獲取流文件
    private static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 刪除本地臨時文件
     *
     * @param file
     */
    public static void deleteTempFile(File file) {
        if (file != null) {
            File del = new File(file.toURI());
            del.delete();
        }
    }
}

附言

由于本選題程序不便于公開,故此處只貼上核心代碼。


  1. 參照鏈接:https://blog.csdn.net/weixin_45379185/article/details/125852990 ??文章來源地址http://www.zghlxwxcb.cn/news/detail-700041.html

到了這里,關(guān)于SpringBoot項目中前后端對圖片的上傳與接收操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot項目打成jar包后,上傳的靜態(tài)資源(圖片等)如何存儲和訪問

    SpringBoot項目打成jar包后,上傳的靜態(tài)資源(圖片等)如何存儲和訪問

    使用springboot開發(fā)一個項目,開發(fā)文件上傳的時候,通常會將上傳的文件存儲到資源目錄下的static里面,然后在本地測試上傳文件功能沒有問題,但是將項目打成jar包放到服務(wù)器上運行的時候就會報錯,找不到對應(yīng)目錄?;蛘呖梢詫⑸蟼魑募鎯Φ胶蚸ar包同級的目錄下,但是無

    2024年02月12日
    瀏覽(25)
  • Ueditor 百度強大富文本Springboot 項目集成使用(包含上傳文件和上傳圖片的功能使用)簡單易懂,舉一反三

    Ueditor 百度強大富文本Springboot 項目集成使用(包含上傳文件和上傳圖片的功能使用)簡單易懂,舉一反三

    首先如果大家的富文本中不考慮圖片或者附件的情況下,只考慮純文本且排版的情況下我們可以直接讓前端的vue來繼承UEditor就可以啦。但是要讓前端將那幾個上傳圖片和附件的哪些功能給閹割掉! 然后就是說如果考慮到了上傳圖片或者視頻和附件那么咱們還是用的前后分離

    2024年02月15日
    瀏覽(26)
  • SpringBoot3 + uniapp 對接 阿里云0SS 實現(xiàn)上傳圖片視頻到 0SS 以及 0SS 里刪除圖片視頻的操作(最新)

    SpringBoot3 + uniapp 對接 阿里云0SS 實現(xiàn)上傳圖片視頻到 0SS 以及 0SS 里刪除圖片視頻的操作(最新)

    UpLoadFile.vue deleteOssFile.js http.js FileUploadController.java AliOssUtil.java

    2024年04月14日
    瀏覽(29)
  • (前后端交互式)Ajax上傳圖片 + 更換背景圖片

    上傳-圖片 注意1:上傳的圖片必須在2MB以內(nèi) 注意2:服務(wù)器端oss(阿里云對象存儲)為了安全性,圖片url網(wǎng)址不能直接在瀏覽器地址欄訪問 請用img/背景圖方式進行使用 上傳圖片的代碼實現(xiàn) * 1. 獲取圖片文件 * 2. 使用 FormData 攜帶圖片文件 * 3. 提交到服務(wù)器,獲取圖片url網(wǎng)址使

    2024年02月14日
    瀏覽(25)
  • SpringBoot文件上傳同時,接收復(fù)雜參數(shù)

    SpringBoot文件上傳同時,接收復(fù)雜參數(shù)

    目錄 環(huán)境信息 問題描述 錯誤分析 解決方法 簡單參數(shù) 總結(jié) ????????Spring Boot:2.0.8.RELEASE ????????Spring Boot內(nèi)置的tomcat:tomcat-embed-core 8.5.37 ? ? ? ? 收到文件上傳的開發(fā)工作,要求能適配各種場景,并且各場景的請求參數(shù)不一樣,因此接收的參數(shù)不能是固定的幾個字段

    2024年02月09日
    瀏覽(18)
  • 網(wǎng)安入門11-文件上傳(前后端繞過,變形馬圖片馬)

    網(wǎng)安入門11-文件上傳(前后端繞過,變形馬圖片馬)

    Upload-Labs是一個使用PHP語言編寫、專注于文件上傳漏洞的闖關(guān)式網(wǎng)絡(luò)安全靶場。練習(xí)該靶場可以有效地了解并掌握文件上傳漏洞的原理、利用方法和修復(fù)方案。 思考:他只讓我傳一個.jpg的圖片,我想傳一個.php的木馬,兩者什么區(qū)別 文件類型不一樣 文件大小不一樣 內(nèi)容不一

    2024年01月25日
    瀏覽(23)
  • 【前后端的那些事】開源!快速上手富文本+富文本圖片上傳

    【前后端的那些事】開源!快速上手富文本+富文本圖片上傳

    前言 :最近寫項目,發(fā)現(xiàn)了一些很有意思的功能,想寫文章,錄視頻把這些內(nèi)容記錄下。但這些功能太零碎,如果為每個功能都單獨搭建一個項目,這明顯不合適。于是我想,就搭建一個項目,把那些我想將的小功能全部整合到一起。實現(xiàn) 搭一次環(huán)境 ,處處使用。 本文主要

    2024年01月20日
    瀏覽(23)
  • SpringBoot后端接收Axios上傳的文件

    SpringBoot后端接收Axios上傳的文件

    很多時候,我們項目開發(fā)的過程中,難免會遇到文件上傳的需求 對于 SpringBoot 項目,我們該如何編寫一個文件上傳的接口呢? 這里我用的是 阿里云OSS 云服務(wù)器來作為上傳文件的存儲倉庫,比起存儲在電腦本地,云服務(wù)器更加便于管理、性能更好并且更加 安全 ,值得我們選

    2024年02月22日
    瀏覽(18)
  • 前后端服務(wù)器分離時,前端如何上傳圖片到前端服務(wù)器?

    當前后端服務(wù)器分離時,前端上傳圖片到前端服務(wù)器可以采用以下幾種方式: 1. 直接上傳到前端服務(wù)器:可以通過使用HTML的`input type=\\\"file\\\"`元素,讓用戶選擇圖片文件并直接上傳到前端服務(wù)器。前端服務(wù)器可以使用后端提供的API接口處理上傳請求,然后將圖片保存到前端服務(wù)

    2024年04月27日
    瀏覽(98)
  • 若依的多圖片上傳/回顯/保存多圖片路徑url逗號隔開存數(shù)據(jù)庫,前后端都有,拷貝即用

    用戶在前端上傳不等數(shù)量圖片,現(xiàn)在需要把其相對/絕對路徑存進數(shù)據(jù)庫中,方便后期使用和頁面回顯. 后端存儲pic字段是字符串 用于? 用\\\",\\\"逗號? 拼接 多個圖片 url? 1.html代碼: 前端走馬燈瀏覽已經(jīng)上傳的圖片 前端JS方法,一共四個, 1.上傳前校驗方法 2.上傳方法 3.上傳數(shù)量限制方

    2024年02月16日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包