Java怎么实现整合文件上传到FastDFS
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,这篇文章主要介绍Java怎么实现整合文件上传到FastDFS,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.引入fastdfs依赖到pom.xml
千家信息网最后更新 2025年02月08日Java怎么实现整合文件上传到FastDFS
这篇文章主要介绍Java怎么实现整合文件上传到FastDFS,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1.引入fastdfs依赖到pom.xml
com.github.tobato fastdfs-client 1.26.5
2.上传代码如下
上传纯文件流
/** * 文件上传 * @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(); }
整体代码如下:
package com.tfjybj.arpro.crawl.service.impl; import com.github.tobato.fastdfs.domain.fdfs.StorePath;import com.github.tobato.fastdfs.service.FastFileStorageClient;import com.tfjybj.arpro.crawl.service.FileUploadService;import 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"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
文件
地址
链接
配置
整合
代码
信息
内容
对象
形式
文件名
服务器
程序
篇文章
类型
结果
网络
网络资源
资源
错误
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术 面试题目
互联网诊疗网络安全
香港服务器如何做好防护
上海云展网络技术服务中心
本地sql数据库地址
科技型互联网公司是干什么的
网络安全 谁管理谁负责
下载文件显示服务器繁忙
各种服务器质量
大型软件开发有哪些
软件开发类项目管理流程
保密和网络安全培训心得
beta版服务器ip怎么填
软件设计数据库
博雅数据库2017-2019
亿库云主机数据库
包头职业技术计算机网络技术
北戴河城区数据库
游戏服务器 地图数据
网络安全政策与技术
360儿童网络安全知识
我的世界搜不到别人的服务器
高中网络技术应用教学总结
数据库可以用来存图片吗
三级数据库技术建议
特瑞格网络技术靠谱吗
自学软件开发需要怎么做
企业服务器租金价格
深信服计算机网络安全大赛
网络技术厉害的人有哪些