• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

基于SpringBoot实现上传2种方法工程代码实例

springboot 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

创建SpringBoot工程:

再导入所需要的依赖:

<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()
@Component
public 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.get<a>本文来源gao($daima.com搞@代@#码8网^</a>OriginalFilename());
  Map<String, Object> map = uploadService.upload(mf);
  return map;
 }
}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基于SpringBoot实现上传2种方法工程代码实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址