日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

基于SpringBoot實現上傳2種方法工程代碼實例

瀏覽:30日期:2023-05-01 15:45:14

創建SpringBoot工程:

基于SpringBoot實現上傳2種方法工程代碼實例

再導入所需要的依賴:

<dependency> <groupId>net.oschina.zcx7878</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27.0.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency>

創建上傳業務層程序:

package cn.dzz.fastdfs.service;import org.apache.commons.lang3.StringUtils;import org.csource.fastdfs.*;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import java.util.HashMap;import java.util.Map;/** * @author DaiZhiZhou * @file Boot-With-FastDFS * @create 2020-08-13 8:55 */// @PropertySource()@Componentpublic class UploadService { @Value('${fastdfs.tracker_servers}') private String tracker_servers; @Value('${fastdfs.connect_timeout_in_seconds}') private int connect_timeout; @Value('${fastdfs.network_timeout_in_seconds}') private int network_timeout; @Value('${fastdfs.charset}') private String charset; public Map<String,Object> upload(MultipartFile multipartFile) { if (multipartFile == null) { throw new RuntimeException('文件不能為空'); } // 上傳至fastDFS, 返回文件id String fileId = this.fdfsUpload(multipartFile); if (StringUtils.isEmpty(fileId)) { System.out.println('上傳失敗'); throw new RuntimeException('上傳失敗'); } Map<String, Object> map=new HashMap<>(); map.put('code',200); map.put('msg','上傳成功'); map.put('fileId',fileId); return map; } /** * 上傳至fastDFS * @param multipartFile * @return 文件id */ private String fdfsUpload(MultipartFile multipartFile) { // 1. 初始化fastDFS的環境 initFdfsConfig(); // 2. 獲取trackerClient服務 TrackerClient trackerClient = new TrackerClient(); try { TrackerServer trackerServer = trackerClient.getConnection(); // 3. 獲取storage服務 StorageServer storeStorage = trackerClient.getStoreStorage(trackerServer); // 4. 獲取storageClient StorageClient1 storageClient1 = new StorageClient1(trackerServer, storeStorage); // 5. 上傳文件 (文件字節, 文件擴展名, ) // 5.1 獲取文件擴展名 String originalFilename = multipartFile.getOriginalFilename(); String extName = originalFilename.substring(originalFilename.lastIndexOf('.') + 1); // 5.2 上傳 String fileId = storageClient1.upload_file1(multipartFile.getBytes(), extName, null); return fileId; } catch (Exception e) { System.out.println(e); return null; } } /** * 初始化fastDFS的環境 */ private void initFdfsConfig() { try { ClientGlobal.initByTrackers(tracker_servers); ClientGlobal.setG_connect_timeout(connect_timeout); ClientGlobal.setG_network_timeout(network_timeout); ClientGlobal.setG_charset(charset); } catch (Exception e) { System.out.println(e); } }}

創建上傳控制器:

package cn.dzz.fastdfs.controller;import cn.dzz.fastdfs.service.UploadService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;import java.util.Map;/** * @author DaiZhiZhou * @file Boot-With-FastDFS * @create 2020-08-13 8:58 */@RestController@RequestMapping('upload')public class UploadController { @Autowired private UploadService uploadService; /** * 作上傳 */ @RequestMapping('doUpload') public Map<String,Object> doUpload(MultipartFile mf){ System.out.println(mf.getOriginalFilename()); Map<String, Object> map = uploadService.upload(mf); return map; }}

在static目錄中創建index.html用于上傳測試:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><h1>文件上傳</h1><hr><form action='/upload/doUpload' method='post' enctype='multipart/form-data'> <input type='file' name='mf'> <input type='submit' value='上傳'></form></body></html>

運行SpringBoot進行測試:

基于SpringBoot實現上傳2種方法工程代碼實例

測試成功:

基于SpringBoot實現上傳2種方法工程代碼實例

查看文件位置也可以被訪問到:

基于SpringBoot實現上傳2種方法工程代碼實例

上傳文件實現方式二:

更改依賴:

<!-- https://mvnrepository.com/artifact/com.github.tobato/fastdfs-client --> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.7</version> </dependency>

創建一個配置類UploadProperties

package cn.dzz.fastdfs.config;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import java.util.List;/** * @author DaiZhiZhou * @file Boot-With-FastDFS * @create 2020-08-13 9:10 */@Data@Component@ConfigurationProperties(prefix = 'upload')public class UploadProperties { private String baseUrl; private List<String> allowTypes;}

更改之前的yml配置:

fdfs: so-timeout: 2500 # 讀取時間 connect-timeout: 600 # 連接超時時間 thumb-image: # 縮略圖 width: 100 height: 100 tracker-list: # tracker服務配置地址列表 - 服務器或者虛擬機IP:22122upload: base-url: http://服務器或者虛擬機IP/ allow-types: - image/jpeg - image/png - image/bmp - image/gif

編寫UploadProperties.java

package cn.dzz.config;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import java.util.List;/** * @author DaiZhiZhou * @file fdfs * @create 2020-08-13 9:33 */@ConfigurationProperties(prefix = 'upload')@Datapublic class UploadProperties { private String baseUrl; private List<String> allowTypes;}

業務層:

package cn.dzz.service;import cn.dzz.config.UploadProperties;import com.github.tobato.fastdfs.domain.fdfs.StorePath;import com.github.tobato.fastdfs.service.FastFileStorageClient;import org.apache.commons.lang3.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.IOException;/** * @author DaiZhiZhou * @file fdfs * @create 2020-08-13 9:34 */@Component@EnableConfigurationProperties(UploadProperties.class)public class UploadService { private Log log= LogFactory.getLog(UploadService.class); @Autowired private FastFileStorageClient storageClient; @Autowired private UploadProperties prop; public String uploadImage(MultipartFile file) { // 1、校驗文件類型 String contentType = file.getContentType(); if (!prop.getAllowTypes().contains(contentType)) { throw new RuntimeException('文件類型不支持'); } // 2、校驗文件內容 try { BufferedImage image = ImageIO.read(file.getInputStream()); if (image == null || image.getWidth() == 0 || image.getHeight() == 0) { throw new RuntimeException('上傳文件有問題'); } } catch (IOException e) { log.error('校驗文件內容失敗....{}', e); throw new RuntimeException('校驗文件內容失敗'+e.getMessage()); } try { // 3、上傳到FastDFS // 3.1、獲取擴展名 String extension = StringUtils.substringAfterLast(file.getOriginalFilename(), '.'); // 3.2、上傳 StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(), extension, null); // 返回路徑 return prop.getBaseUrl() + storePath.getFullPath(); } catch (IOException e) { log.error('【文件上傳】上傳文件失敗!....{}', e); throw new RuntimeException('【文件上傳】上傳文件失敗!'+e.getMessage()); } }}

控制器:

package cn.dzz.controller;import cn.dzz.service.UploadService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import java.util.HashMap;import java.util.Map;/** * @author DaiZhiZhou * @file fdfs * @create 2020-08-13 9:35 */@RequestMapping('upload')@RestControllerpublic class UploadController { @Autowired private UploadService uploadService; @RequestMapping('doUpload') public Map<String,Object> doUpload(MultipartFile multipartFile) { System.out.println(multipartFile.getOriginalFilename()); Map<String, Object> map = new HashMap<>(); String filePath = uploadService.uploadImage(multipartFile); map.put('filePath', filePath); return map; }}

還是一樣的上傳頁面:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><h1>文件上傳</h1><hr><form action='/upload/doUpload' method='post' enctype='multipart/form-data'> <input type='file' name='mf'> <input type='submit' value='上傳'></form></body></html>

運行發現空指針異常,檢查發現表單名稱沒對上,SpringMVC就無法轉換了

基于SpringBoot實現上傳2種方法工程代碼實例

<input type='file' name='multipartFile'>

再次測試:

基于SpringBoot實現上傳2種方法工程代碼實例

訪問:

基于SpringBoot實現上傳2種方法工程代碼實例

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
激情综合五月| 婷婷亚洲五月| 久热精品在线| 一区二区国产在线观看| 亚洲精品无吗| 国产精品一线天粉嫩av| 日韩av不卡在线观看| 91伊人久久| 久久精品国产福利| 久久久精品五月天| 国产一区二区精品| 日本不卡高清| 麻豆成人在线观看| 久久99久久久精品欧美| 精品国产aⅴ| 青青久久av| 丝袜亚洲另类欧美| 国产日韩欧美在线播放不卡| 欧美激情综合| 日韩欧美一区二区三区在线观看 | 韩国久久久久久| 99久久视频| 日韩国产欧美三级| 国产一区二区三区免费在线| 久久一区二区三区电影| 亚洲一区二区三区高清不卡| 亚洲一区二区三区四区电影| 国产精品伊人| 激情综合网五月| 亚洲+小说+欧美+激情+另类| 精品美女视频 | 天堂va欧美ⅴa亚洲va一国产| 国产欧美亚洲一区| 国产麻豆久久| 欧美一区免费| 午夜欧美理论片| 蜜桃久久久久| 亚洲精品小说| 另类欧美日韩国产在线| 亚洲男女av一区二区| 美女国产精品久久久| 久久久精品五月天| 日韩精品亚洲aⅴ在线影院| 都市激情国产精品| 亚洲天堂久久| 国产高清亚洲| 国产免费成人| 国产乱人伦精品一区| 麻豆精品新av中文字幕| 久久亚洲精品中文字幕| 在线日韩成人| 日韩欧美字幕| 亚洲ab电影| 亚洲天堂资源| 日本va欧美va精品| 亚洲一区二区三区高清不卡| 久久99蜜桃| 蜜桃视频在线观看一区二区| 日韩精品电影| 91av一区| 欧美在线综合| 欧美一区影院| 久久夜色精品| 国产精品麻豆久久| 欧美伊人久久| 日韩中文字幕高清在线观看| 深夜福利一区| 精品欠久久久中文字幕加勒比| 亚洲精品一区二区妖精| 亚洲日产国产精品| 欧美成人精品| 欧美日韩伊人| 免费视频国产一区| 色婷婷综合网| 天使萌一区二区三区免费观看| 精品72久久久久中文字幕| 亚洲午夜免费| 国产传媒在线| 久久伊人久久| 亚洲日本免费电影| 久久人人99| 国产不卡一区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 亚洲黄色网址| 国产日韩欧美一区| 亚洲一区av| 欧美激情国产在线| 国产精品丝袜xxxxxxx| 午夜精品成人av| 欧美在线看片| 亚洲精一区二区三区| 樱桃成人精品视频在线播放| 精品国产网站| 中文字幕一区二区三区在线视频| 女人天堂亚洲aⅴ在线观看| 四虎国产精品免费观看| 国产精品毛片一区二区在线看| 亚洲欧洲国产精品一区| 亚洲一区二区网站| 婷婷丁香综合| 成人高清一区| 国产精品黄色片| 国产精品嫩草影院在线看| 精品久久久久中文字幕小说| 国产欧美日韩一级| 亚洲无线观看| 午夜国产欧美理论在线播放| 99久久婷婷这里只有精品| 日韩欧美精品| 精品国产黄a∨片高清在线| 欧美a级一区二区| 久久av资源| 国产精品毛片久久久| 国产成人精品一区二区三区在线| 国产美女精品视频免费播放软件| 免费在线成人网| 视频在线观看一区| 国产午夜精品一区二区三区欧美| 国产精品对白| 国产成人精品亚洲线观看 | 日韩精品视频一区二区三区| 久久av一区| 丝袜a∨在线一区二区三区不卡| 亚洲欧美专区| 国产免费av一区二区三区| 天堂va在线高清一区| 日韩二区三区在线观看| 99在线精品免费视频九九视| 日韩亚洲在线| 麻豆久久精品| 亚洲少妇自拍| 精品一区毛片| 国产精品试看| 日韩精品视频在线看| 日韩成人av影视| 日本精品黄色| 99久久99视频只有精品 | 国产精品网址| 欧美激情另类| 欧美69视频| 日本亚洲欧美天堂免费| 国产精品尤物| 四虎国产精品免费观看| 午夜久久tv| 在线日韩电影| 免播放器亚洲| 日韩国产欧美视频| 欧美经典一区| 性欧美69xoxoxoxo| 日韩国产91| 麻豆精品视频在线观看| 国产精品视频3p| 日韩精品免费一区二区在线观看 | 99亚洲精品| 国产视频一区三区| 日韩成人午夜精品| 精品视频高潮| 亚洲欧美综合| 国产精品主播| 欧美日韩免费看片| 免费人成在线不卡| 国产精品jk白丝蜜臀av小说| 久久久久久一区二区| 日本va欧美va瓶| 国产精品久久久久久久久久白浆 | 国产高清视频一区二区| 国产日韩欧美| 不卡专区在线| 国产亚洲电影| 欧美国产美女| 丝袜美腿成人在线| 欧美天堂视频| 蜜桃视频一区二区| 麻豆视频在线观看免费网站黄 | 一区二区精品伦理...| 好看不卡的中文字幕| 日韩精品a在线观看91| 久久夜夜操妹子| 蜜桃传媒麻豆第一区在线观看| 久久99久久久精品欧美| 亚洲乱码视频| 丝袜美腿诱惑一区二区三区| 亚洲三级在线| 精品一区亚洲| 欧美一区91| 免费观看亚洲| 国产亚洲人成a在线v网站| 三上悠亚国产精品一区二区三区| 欧美激情另类| 日本久久二区| 午夜欧美理论片| 高清一区二区三区| 日本亚洲最大的色成网站www| 欧美激情国产在线| 国产精品久久777777毛茸茸| 亚洲精品极品少妇16p| 精品网站999| 一区二区三区网站| 999国产精品永久免费视频app| 成人在线视频区|