Spring Boot 2.5.1 照片上傳和查看

一、多張圖片上傳和查詢

package com.example.demo.controller;

import com.example.demo.contrac.ErrorCode;
import com.example.demo.contrac.ResultBeanMsg;
import com.example.demo.entity.ResultBean;
import com.example.demo.entity.UpFileBean;
import com.example.demo.entity.User;
import com.example.demo.utils.GetErrorReturnBean;
import com.example.demo.utils.GetSucReturnBean;
import com.example.demo.utils.JdbcUtil;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.UUID;

@RestController
public class FileController {

    @GetMapping(value = "/file")
    public String file() {
        return "file";
    }


    @PostMapping(value = "/multFileUpload")
    public Object multFileUpload(@RequestParam(value = "file") MultipartFile[] fileArray, Model model, String userId) {
        if (fileArray.length == 0) {

            return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_405);
        }

        ArrayList<UpFileBean> stringPathList = new ArrayList<>();
        boolean isFlag = false;
        try {

            for (int i = 0; i < fileArray.length; i++) {
                MultipartFile file = fileArray[i];
                if(file.isEmpty()){
                    continue;
                }
                String fileName = file.getOriginalFilename();  // 文件名
                String suffixName = fileName.substring(fileName.lastIndexOf("."));  // 后綴名
                String filePath = "C://temp-rainy//"; // 上傳后的路徑
                fileName = UUID.randomUUID() + suffixName; // 新文件名
                File dest = new File(filePath + fileName);
                if (!dest.getParentFile().exists()) {
                    dest.getParentFile().mkdirs();
                }
                try {
                    file.transferTo(dest);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                String filenameUrl = "/upload-rainy/" + fileName;
                model.addAttribute("filename", filenameUrl);
                stringPathList.add(new UpFileBean("/image/"+fileName, fileName));
            }

        } catch (Exception e) {
            e.fillInStackTrace();
            System.out.println(e.getMessage());
            return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_402);
        }

        try {
            StringBuffer stringBuffer = new StringBuffer();
            for (int j = 0; j < stringPathList.size(); j++) {
                stringBuffer.append(stringPathList.get(j).getPath());
                if (stringPathList.size() - 1 != j) {
                    stringBuffer.append(",");
                }

            }

            Connection connection;
            Statement statement;
            try {
                //獲取鏈接
                connection = JdbcUtil.getConnection();
                //獲取sql執(zhí)行對(duì)象
                statement = connection.createStatement();
            } catch (Exception e) {
                e.fillInStackTrace();
                return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_401);
            }


            //5.用執(zhí)行SQL的對(duì)象去執(zhí)行SQL(可能存在結(jié)果,需要查看返回結(jié)果)
            if (statement == null) {
                return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_403);
            }

            String sql = "UPDATE t_user SET userPhoto ='" + stringBuffer + "'WHERE userId = '" + userId + "'";

            long l = statement.executeLargeUpdate(sql);
            if (l != -1) {
                isFlag = true;
            }
        } catch (Exception e) {
            e.fillInStackTrace();
        }

        if (isFlag) {
            ResultBean resultBean = new ResultBean();
            resultBean.setList(stringPathList);
            resultBean.setCount(stringPathList.size());
            return GetSucReturnBean.sucReturnBean(resultBean, ResultBeanMsg.SUCCESS_UP_MSG);
        } else {
            ResultBean resultBean = new ResultBean();
            resultBean.setList(stringPathList);
            resultBean.setCount(stringPathList.size());
            return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_405);
        }

    }

    @PostMapping("getPhotoByUserId")
    public Object getPhotoByUserId(@RequestBody String userId) {
        try {
            JsonParser parser = new JsonParser();

            JsonObject asJsonObject = parser.parse(userId).getAsJsonObject();
            if (!asJsonObject.has("userId") || asJsonObject.get("userId").getAsString().isEmpty()) {
                return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_401);
            }

            String name1 = asJsonObject.get("userId").getAsString();
            System.out.print("入?yún)?" + userId + "\r\n");
            Connection connection;
            Statement statement;

            try {
                //獲取鏈接
                connection = JdbcUtil.getConnection();
                //獲取sql執(zhí)行對(duì)象
                statement = connection.createStatement();
            } catch (Exception e) {
                e.fillInStackTrace();
                return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_405);
            }


            //5.用執(zhí)行SQL的對(duì)象去執(zhí)行SQL(可能存在結(jié)果,需要查看返回結(jié)果)
            if (statement == null) {
                return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_403);
            }

            String sql = "SELECT userPhoto FROM t_user where userId = '" + name1 + "'";
            ResultSet resultSet = statement.executeQuery(sql);//返回的結(jié)果集,其中封裝了我們?nèi)康牟樵兂鰜?lái)的結(jié)果
            ArrayList<UpFileBean> userArrayList = new ArrayList<>();

            while (resultSet.next()) {
                String userPhoto = resultSet.getString("userPhoto");
                if (userPhoto != null && !userPhoto.isEmpty()) {
                    String[] split = userPhoto.split(",");
                    for (int i = 0; i < split.length; i++) {
                        userArrayList.add(new UpFileBean(split[i], ""));
                    }
                }

            }

            JdbcUtil.release(connection, statement, resultSet);

            if (userArrayList.size() == 0) {
                return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_402, "未查詢到");
            } else {
                ResultBean resultBean = new ResultBean();
                resultBean.setList(userArrayList);
                resultBean.setCount(userArrayList.size());
                return GetSucReturnBean.sucReturnBean(resultBean);
            }


        } catch (Exception e) {
            e.fillInStackTrace();
            System.out.print(e.getMessage());
            return GetErrorReturnBean.getErrrorBean(ErrorCode.CODE_401);

        }

    }
}


二、文件映射

package com.example.demo.controller;

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 FileAppconfigurer implements WebMvcConfigurer {
    // 定制資源映射
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //url 中讀取到image時(shí) 會(huì)自定解析到file:C:/temp-rainy/
        //addResourceHandler image 對(duì)外 暴露的訪問(wèn)路徑
        //addResourceLocations 文件指定的位置
        registry.addResourceHandler("/image/**").addResourceLocations("file:C:/temp-rainy/");
    }
}


三、驗(yàn)證

image.png

image.png

image.png
image.png

http://xxx.xx.110.131:8081/image/a91df70e-0f87-422a-b643-1087f1eb8363.jpg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 504b 0304 1400 0008 0800 4498 963d a6fa9ff3 9f41 1e00 a88...
    BossOx閱讀 12,695評(píng)論 0 0
  • 504b 0304 1400 0008 0800 fa8c 963d 50740baa dffc 0e00 6cd...
    BossOx閱讀 4,080評(píng)論 0 0
  • 6270 a1da b5e7 b8aa 4d60 60c6 dea2 9fcc66b3 1acd 0596 77b...
    BossOx閱讀 10,321評(píng)論 0 0
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過(guò)就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,932評(píng)論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者,不喜歡去冒險(xiǎn),但是人生放棄了冒險(xiǎn),也就放棄了無(wú)數(shù)的可能。 ...
    yichen大刀閱讀 8,202評(píng)論 0 4

友情鏈接更多精彩內(nèi)容