最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)圖片文件上傳

 更新時(shí)間:2022年06月23日 11:14:29   作者:糖味oO  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖片文件上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Java實(shí)現(xiàn)后臺(tái)圖片上傳,將上傳圖片的接口進(jìn)行分層,便于維護(hù)接口。

接口部分(interface)

將接口分為單圖片上傳以及多圖片上傳

public interface FileUploadService {
?? ?//單圖片上傳
? ? PicUploadResult uplodadImg(MultipartFile uploadFile, HttpServletRequest request);

?? ?//多圖片上傳
? ? PicUploadResult uploadManyImg(MultipartFile[] uploadFile, HttpServletRequest request);
}

接口實(shí)現(xiàn)類(interface impl)

上傳圖片方法類(主要)

上傳多個(gè)圖片只是使用了數(shù)組的方式將文件存到MultipartFile里面。以防代碼冗余,所以將實(shí)現(xiàn)方法抽出來

/**
? ? ?* 上傳圖片方法類
? ? ?* @param multipartFile
? ? ?* @param request
? ? ?* @return
? ? ?*/
? ? private PicUploadResult uploadImgMethod(MultipartFile multipartFile, HttpServletRequest request) {
? ? ? ? PicUploadResult picUploadResult = new PicUploadResult();

? ? ? ? if (multipartFile.isEmpty()) {
? ? ? ? ? ? //返回選擇文件提示
? ? ? ? ? ? picUploadResult.setLegal(false);
? ? ? ? ? ? return picUploadResult;
? ? ? ? }
? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/");
? ? ? ? String format = sdf.format(new Date());
? ? ? ? //存放上傳文件的文件夾
? ? ? ? File file = new File(baseFilePath + format);
? ? ? ? logger.info("-----------存放上傳文件的文件夾【" + file + "】-----------");
? ? ? ? logger.info("-----------輸出文件夾絕對(duì)路徑 -- 這里的絕對(duì)路徑是相當(dāng)于當(dāng)前項(xiàng)目的路徑而不是“容器”路徑【" + file.getAbsolutePath() + "】-----------");
? ? ? ? if (!file.isDirectory()) {
? ? ? ? ? ? //遞歸生成文件夾
? ? ? ? ? ? file.mkdirs();
? ? ? ? }
? ? ? ? //獲取原始的名字 ?original:最初的,起始的 ?方法是得到原來的文件名在客戶機(jī)的文件系統(tǒng)名稱
? ? ? ? String oldName = multipartFile.getOriginalFilename();
? ? ? ? logger.info("-----------文件原始的名字【" + oldName + "】-----------");
? ? ? ? String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."), oldName.length());
? ? ? ? logger.info("-----------文件要保存后的新名字【" + newName + "】-----------");
? ? ? ? try {
? ? ? ? ? ? //構(gòu)建真實(shí)的文件路徑
? ? ? ? ? ? File newFile = new File(file.getAbsolutePath() + File.separator + newName);
? ? ? ? ? ? //轉(zhuǎn)存文件到指定路徑,如果文件名重復(fù)的話,將會(huì)覆蓋掉之前的文件,這里是把文件上傳到 “絕對(duì)路徑”
? ? ? ? ? ? multipartFile.transferTo(newFile);
? ? ? ? ? ? String filePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/picbook/" + UPLOAD_PATH_PREFIX + format + newName;
? ? ? ? ? ? logger.info("-----------【" + filePath + "】-----------");
? ? ? ? ? ? picUploadResult.setLegal(true);
? ? ? ? ? ? picUploadResult.setImgPath(filePath);
? ? ? ? ? ? return picUploadResult;
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? picUploadResult.setLegal(false);
? ? ? ? return picUploadResult;
? ? }

實(shí)現(xiàn)方法接口

單圖片上傳

public PicUploadResult uplodadImg(MultipartFile multipartFile, HttpServletRequest request) {
? ? ? ? return uploadImgMethod(multipartFile, request);
? ? }

多圖片上傳

public PicUploadResult uploadManyImg(MultipartFile[] uploadFile, HttpServletRequest request) {

? ? ? ? List<String> imgPaths = new ArrayList<>();
? ? ? ? for (MultipartFile multipartFile : uploadFile) {
? ? ? ? ? ? PicUploadResult picUploadResult = uploadImgMethod(multipartFile, request);
? ? ? ? ? ? if(picUploadResult.isLegal()){
? ? ? ? ? ? ? ? imgPaths.add(picUploadResult.getImgPath());
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? return picUploadResult;
? ? ? ? ? ? }

? ? ? ? }

? ? ? ? PicUploadResult picUploadResult = new PicUploadResult();
? ? ? ? picUploadResult.setLegal(true);
? ? ? ? picUploadResult.setImgPahts(imgPaths);
? ? ? ? return picUploadResult;
? ? }

實(shí)現(xiàn)方法補(bǔ)充

// 項(xiàng)目上傳至絕對(duì)路徑(在yml里配置你的項(xiàng)目絕對(duì)路徑)
? ? @Value("${file.save-path}")
? ? private String baseFilePath;
? ? // 項(xiàng)目根路徑下的目錄 ?-- SpringBoot static 目錄相當(dāng)于是根路徑下(SpringBoot 默認(rèn))
? ? private final static String UPLOAD_PATH_PREFIX = "statics/uploadFile/";

控制層

public class FileUploadController {
? ? // 允許上傳的格式 圖片形式
? ? private static final String[] IMAGE_TYPE = new String[]{".bmp", ".jpg", ".jpeg", ".png"};

? ? @Resource
? ? private FileUploadService fileUploadService;

? ? @PostMapping("/uploadImg")
? ? public R uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
? ? ? ? boolean isFlag = false;
? ? ? ? for (String type : IMAGE_TYPE) {
? ? ? ? ? ? System.out.println(file.getOriginalFilename());
? ? ? ? ? ? if (StringUtils.endsWithIgnoreCase(file.getOriginalFilename(), type)) {
? ? ? ? ? ? ? ? isFlag = true;
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? if (isFlag) {
? ? ? ? ? ? PicUploadResult picUploadResult = fileUploadService.uplodadImg(file, request);
? ? ? ? ? ? boolean isLegal = picUploadResult.isLegal();

? ? ? ? ? ? if (isLegal) {
? ? ? ? ? ? ? ? Map resMap = new HashMap<>();
? ? ? ? ? ? ? ? resMap.put("imgPath", picUploadResult.getImgPath());
? ? ? ? ? ? ? ? return R.ok(resMap);
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? return R.error("圖片上傳有誤");
? ? ? ? ? ? }
? ? ? ? } else {
? ? ? ? ? ? return R.error("上傳的圖片格式必須為:bmp,jpg,jpeg,png");
? ? ? ? }

? ? }

? ? @PostMapping("/uploadManyImg")
? ? public R uploadManyImg(@RequestParam("files") MultipartFile[] files, HttpServletRequest request) {
? ? ? ? boolean isFlag = false;
? ? ? ? for (MultipartFile uploadFile : files) {
? ? ? ? ? ? for (String type : IMAGE_TYPE) {
? ? ? ? ? ? ? ? if (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(), type)) {
? ? ? ? ? ? ? ? ? ? isFlag = true;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? if (isFlag) {
? ? ? ? ? ? PicUploadResult picUploadResult = fileUploadService.uploadManyImg(files, request);
? ? ? ? ? ? boolean isLegal = picUploadResult.isLegal();

? ? ? ? ? ? if (isLegal) {
? ? ? ? ? ? ? ? Map resMap = new HashMap<>();
? ? ? ? ? ? ? ? resMap.put("imgPaths", picUploadResult.getImgPahts());
? ? ? ? ? ? ? ? return R.ok(resMap);
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? return R.error("圖片上傳有誤");
? ? ? ? ? ? }
? ? ? ? } else {
? ? ? ? ? ? return R.error("上傳的圖片格式必須為:bmp,jpg,jpeg,png");
? ? ? ? }
? ? }
}

工具類

根據(jù)實(shí)際情況添加所需的字段

public class PicUploadResult
{
? ? private boolean isLegal;

? ? private String imgPath;

? ? private List<String> imgPahts;

}

Postman

(僅用于個(gè)人學(xué)習(xí)編碼記錄,代碼均參考于百度以及自己改進(jìn),如有疑問歡迎大家積極討論)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java解決代碼重復(fù)的三個(gè)絕招分享

    Java解決代碼重復(fù)的三個(gè)絕招分享

    本文將從業(yè)務(wù)代碼中最常見的三個(gè)需求展開,聊聊如何使用?Java?中的一些高級(jí)特性、設(shè)計(jì)模式,以及一些工具消除重復(fù)代碼,才能既優(yōu)雅又高端
    2022-07-07
  • 淺析Java中局部變量與成員變量同名解決技巧

    淺析Java中局部變量與成員變量同名解決技巧

    在剛開始學(xué)習(xí)Java的時(shí)候,就了解了Java基礎(chǔ)中的變量,雖然知道這個(gè)以后會(huì)經(jīng)常用到,但沒想到了基本語法這里,竟然又冒出來了成員變量和局部變量。變來變?nèi)ヌ菀鬃屓烁銜灹耍裉煳覀兙吞魭鰜硎崂硪幌拢?/div> 2016-07-07
  • 關(guān)于log4j日志擴(kuò)展---自定義PatternLayout

    關(guān)于log4j日志擴(kuò)展---自定義PatternLayout

    這篇文章主要介紹了關(guān)于log4j日志擴(kuò)展---自定義PatternLayout,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring Mvc中傳遞參數(shù)方法之url/requestMapping詳解

    Spring Mvc中傳遞參數(shù)方法之url/requestMapping詳解

    在開發(fā)中,參數(shù)傳遞是必不可少的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Spring Mvc中傳遞參數(shù)方法之url/requestMapping的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • @Value如何獲取yml和properties配置參數(shù)

    @Value如何獲取yml和properties配置參數(shù)

    這篇文章主要介紹了@Value如何獲取yml和properties配置參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java excel數(shù)據(jù)導(dǎo)入mysql的實(shí)現(xiàn)示例詳解

    Java excel數(shù)據(jù)導(dǎo)入mysql的實(shí)現(xiàn)示例詳解

    今天教大家如何使用Java將excel數(shù)據(jù)導(dǎo)入MySQL,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴呢很有幫助,需要的朋友可以參考下
    2022-08-08
  • java常用工具類之Excel操作類及依賴包下載

    java常用工具類之Excel操作類及依賴包下載

    這篇文章主要介紹了java常用工具類Excel操作類及依賴包下載,需要的朋友可以參考下
    2014-07-07
  • Java編程實(shí)現(xiàn)beta分布的采樣或抽樣實(shí)例代碼

    Java編程實(shí)現(xiàn)beta分布的采樣或抽樣實(shí)例代碼

    這篇文章主要介紹了Java編程實(shí)現(xiàn)beta分布的采樣或抽樣實(shí)例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • ShardingSphere jdbc實(shí)現(xiàn)分庫(kù)分表核心概念詳解

    ShardingSphere jdbc實(shí)現(xiàn)分庫(kù)分表核心概念詳解

    這篇文章主要為大家介紹了ShardingSphere jdbc實(shí)現(xiàn)分庫(kù)分表核心概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Java日期工具類DateUtils實(shí)例詳解

    Java日期工具類DateUtils實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Java日期工具類DateUtils實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評(píng)論

青铜峡市| 普宁市| 龙岩市| 东乡县| 磐安县| 商南县| 中山市| 伊宁市| 乌鲁木齐市| 巴彦县| 桃园市| 隆昌县| 来宾市| 新乐市| 东安县| 双辽市| 江油市| 扬州市| 中卫市| 石城县| 宽甸| 翁牛特旗| 烟台市| 西畴县| 渑池县| 灵山县| 襄樊市| 名山县| 西和县| 西乌珠穆沁旗| 镇远县| 无极县| 宣武区| 石泉县| 北碚区| 宝鸡市| 武定县| 衡阳县| 丹寨县| 阿鲁科尔沁旗| 团风县|