您好,登錄后才能下訂單哦!
這篇文章主要介紹Java怎么實現整合文件上傳到FastDFS,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
<dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.5</version> </dependency>
/** * 文件上傳 * @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 @Slf4j public 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; } } }
# 文件服務器基礎配置 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
無論是純文件上傳還是以網絡資源鏈接的形式上傳都是文件流上傳的形式。
以上是“Java怎么實現整合文件上傳到FastDFS”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。