java使用fastdfs,fastdfs 上传文件

  java使用fastdfs,fastdfs 上传文件

  

目录

1.引入分布式存储依赖到pom.xml2 .上传代码如下上传纯文件流上传网络资源链接:整体代码如下:3.配置文件如下4.上传效果如下

 

  

1.引入fastdfs依赖到pom.xml

相关性groupIdcom.github.tobato/groupId artifactIdfastdfs客户端/artifactId版本1 .26 .5/版本/相关性

 

  

2.上传代码如下

 

  

上传纯文件流

/** * 文件上传* @param file MultipartFile类型* @ return URL */@覆盖公共字符串文件上传(多部分文件文件)抛出异常{ try { return upload(file);} catch(Exception e){ e . printstacktrace();}抛出新异常();}

 

  

上传网络资源链接:

/** * 文件上传* @param urlStr url地址* @ return URL */@覆盖公共字符串文件上传(String urlStr)引发异常{尝试{ //把地址转换成统一资源定位器对象URL url=新URL(urlStr);//创建超文本传送协议(超文本传输协议的缩写)链接http URL connection conn=(http URL connection)URL。打开连接();//设置超时间为3秒conn . setconnecttimeout(3 * 1000);//防止屏蔽程序抓取而返回403错误conn.setRequestProperty(用户代理、‘Mozilla/5.0(Windows NT 6.1;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/61。0 .3163 .100 Safari/537.36)’);//得到输入流InputStream InputStream=conn . getinputstream();//截取链接中的文件名字符串文件名=urlstr。子字符串(urlstr。lastindexof(/)1);多部分文件多部分文件=新的模拟多部分文件(文件名,文件名,内容类型应用程序_八位字节_流。tostring()、inputStream);//返回结果集返回上传(多文件);} catch(Exception e){ e . printstacktrace();}抛出新异常();}

 

  

整体代码如下:

包com。tfjybj。ar pro。爬行。服务。impl导入com。github。去巴托。fastdfs。域。fdfs。存储路径;导入com。github。去巴托。fastdfs。服务。fastfilestorageclient导入com。tfjybj。ar pro。爬行。服务。fileuploadservice导入com .

 

  tfjybj.arpro.crawl.util.CommonConfigurationUtil;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.apache.http.entity.ContentType;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.mock.web.MockMultipartFile;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile; import java.io.*;import java.net.HttpURLConnection;import java.net.URL; /** * 文件上传业务类 * * @author Promsing(张有博) * @version 1.0.0 * @since 2022/2/25 - 20:01 */@Service@Slf4jpublic class FileUploadServiceImpl implements FileUploadService { @Autowired private FastFileStorageClient fastFileStorageClient; // 获取配置文件中的配置IP地址 @Value("${fdfs.realIp}") private String realIp; // 获取配置文件中的配置分组 @Value("${fdfs.groupName}") private String group; /** * 文件上传 * @param file MultipartFile类型 * @return url */ @Override public String fileUpload(MultipartFile file) throws Exception { try { return upload(file); } catch (Exception e) { e.printStackTrace(); } throw new Exception(); } /** * 文件上传 * @param urlStr url地址 * @return url */ @Override public String fileUpload(String urlStr) throws Exception { try { //把地址转换成URL对象 URL url = new URL(urlStr); //创建http链接 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置超时间为3秒 conn.setConnectTimeout(3*1000); //防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36)"); //得到输入流 InputStream inputStream = conn.getInputStream(); //截取链接中的文件名 String fileName= urlStr.substring(urlStr.lastIndexOf("/")+1); MultipartFile multipartFile = new MockMultipartFile(fileName,fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream); //返回结果集 return upload(multipartFile); } catch (Exception e) { e.printStackTrace(); } throw new Exception(); } /** * 文件上传 * @param file 需要上传的文件 * @return 上传后的文件地址 */ public String upload(MultipartFile file) { try { // 1.文件信息校验 if (file.isEmpty()) { log.debug("需要上传的文件信息不通过"); return null; } // 2.保存图片到fastDFS服务器 //2.1 获取文件后缀名 String extension = StringUtils.substringAfterLast(file.getOriginalFilename(), "."); //2.2 保存 StorePath storePath = fastFileStorageClient.uploadFile(group, file.getInputStream(), file.getSize(), extension); // 获取附件的完整地址 String Path = CommonConfigurationUtil.HTTP + CommonConfigurationUtil.ECOLON + CommonConfigurationUtil.DOUBLE_SLASH + realIp + CommonConfigurationUtil.SINGLE_SLASH + storePath.getFullPath(); log.info("文件上传成功,文件地址:" + Path); return Path; } catch (Exception ex) { ex.printStackTrace(); return null; } } }

 

  

3.配置文件如下

# 文件服务器基础配置fdfs: groupName: ar so-timeout: 1500 connect-timeout: 600 tracker-list: d-fastdfs.xxxx.com:22122 replace-ip: source: d-fastdfs.xxxx.com dest: d-fastdfs.xxxx.com realIp: d-fastdfs.xxxx.com

 

  

4.上传效果如下

 

  无论是纯文件上传还是以网络资源链接的形式上传都是文件流上传的形式。

  到此这篇关于Java实现整合文件上传到FastDFS的方法详细的文章就介绍到这了,更多相关Java文件上传FastDFS内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: