您现在的位置是:主页 > news > it美工做网站/百度推广是什么意思

it美工做网站/百度推广是什么意思

admin2025/4/30 21:21:44news

简介it美工做网站,百度推广是什么意思,做网站能挣钱不,网站建设标准流程及外包注意事项Springboot中利用FASTDFS实现图片上传 一. 解决fastdfs-client-java-1.27-SNAPSHOT依赖包不存在的问题 因为fastdfs-client-java-1.27-SNAPSHOT.jar这个依赖包在maven中央仓库是没有的,需要自己编译源码成jar本地安装到maven 的本地仓库,安装完以后就能正常引用了(…

it美工做网站,百度推广是什么意思,做网站能挣钱不,网站建设标准流程及外包注意事项Springboot中利用FASTDFS实现图片上传 一. 解决fastdfs-client-java-1.27-SNAPSHOT依赖包不存在的问题 因为fastdfs-client-java-1.27-SNAPSHOT.jar这个依赖包在maven中央仓库是没有的,需要自己编译源码成jar本地安装到maven 的本地仓库,安装完以后就能正常引用了(…

Springboot中利用FASTDFS实现图片上传

 

一. 解决fastdfs-client-java-1.27-SNAPSHOT依赖包不存在的问题

因为fastdfs-client-java-1.27-SNAPSHOT.jar这个依赖包在maven中央仓库是没有的,需要自己编译源码成jar本地安装到maven 的本地仓库,安装完以后就能正常引用了(注意:本地必须安装了Maven,并配置好Maven环境变量).

<dependency><groupId>org.csource</groupId><artifactId>fastdfs-client-java</artifactId><version>1.27-SNAPSHOT</version>
</dependency>

1. 下载fastdfs-client-java开发工具包

https://github.com/happyfish100/fastdfs-client-java

2. 需要把fastdfs-client-java开发工具包打包到本地的Maven仓库

2.1 解压fastdfs-client-java-master

2.2 进入fastdfs-client-java目录,在此处打开命令窗口 cmd

2.3 输入 mvn clean install

3. 构建一会,如出现以下提示,则成功把fastdfs-client-java打包到本地的Maven仓库.


至此,更新项目Maven,pom.xml文件就不会出现找不到fastdfs-client-java依赖了(成功导入fastdfs-client-java依赖).

二. 代码实现

1. pom包配置

<dependency><groupId>org.csource</groupId><artifactId>fastdfs-client-java</artifactId><version>1.27-SNAPSHOT</version>
</dependency>

添加fastdfs-client-java依赖包,用来调用 FastDFS 的相关API.

2. 配置文件

resources 目录下添加fdfs_client.conf文件

connect_timeout = 60
network_timeout = 60
charset = UTF-8
http.tracker_http_port = 8080
http.anti_steal_token = no
http.secret_key = 123456tracker_server = 192.168.53.85:22122
tracker_server = 192.168.53.86:22122

配置文件设置了连接的超时时间,编码格式以及 tracker_server 地址等信息.

3. 封装 FastDFS 上传工具类

3.1 封装FastDFSFile,文件基础信息包括文件名、内容、文件类型、作者等.

public class FastDFSFile {private String name;private byte[] content;private String ext;private String md5;private String author;//省略getter、setter
}

3.2 封装 FastDFSClient 类,包含常用的上传、下载、删除等方法

首先在类加载的时候读取相应的配置信息,并进行初始化.

static {try {String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();;ClientGlobal.init(filePath);trackerClient = new TrackerClient();trackerServer = trackerClient.getConnection();storageServer = trackerClient.getStoreStorage(trackerServer);} catch (Exception e) {logger.error("FastDFS Client Init Fail!",e);}
}

文件上传代码

public static String[] upload(FastDFSFile file) {logger.info("File Name: " + file.getName() + "File Length:" + file.getContent().length);NameValuePair[] meta_list = new NameValuePair[1];meta_list[0] = new NameValuePair("author", file.getAuthor());long startTime = System.currentTimeMillis();String[] uploadResults = null;try {storageClient = new StorageClient(trackerServer, storageServer);uploadResults = storageClient.upload_file(file.getContent(), file.getExt(), meta_list);} catch (IOException e) {logger.error("IO Exception when uploadind the file:" + file.getName(), e);} catch (Exception e) {logger.error("Non IO Exception when uploadind the file:" + file.getName(), e);}logger.info("upload_file time used:" + (System.currentTimeMillis() - startTime) + " ms");if (uploadResults == null) {logger.error("upload file fail, error code:" + storageClient.getErrorCode());}String groupName = uploadResults[0];String remoteFileName = uploadResults[1];logger.info("upload file successfully!!!" + "group_name:" + groupName + ", remoteFileName:" + " " + remoteFileName);return uploadResults;
}

使用 FastDFS 提供的客户端 storageClient 来进行文件上传,最后将上传结果返回.

根据 groupName 和文件名获取文件信息的代码

public static FileInfo getFile(String groupName, String remoteFileName) {try {storageClient = new StorageClient(trackerServer, storageServer);return storageClient.get_file_info(groupName, remoteFileName);} catch (IOException e) {logger.error("IO Exception: Get File from Fast DFS failed", e);} catch (Exception e) {logger.error("Non IO Exception: Get File from Fast DFS failed", e);}return null;
}

下载文件代码

public static InputStream downFile(String groupName, String remoteFileName) {try {storageClient = new StorageClient(trackerServer, storageServer);byte[] fileByte = storageClient.download_file(groupName, remoteFileName);InputStream ins = new ByteArrayInputStream(fileByte);return ins;} catch (IOException e) {logger.error("IO Exception: Get File from Fast DFS failed", e);} catch (Exception e) {logger.error("Non IO Exception: Get File from Fast DFS failed", e);}return null;
}

删除文件代码

public static void deleteFile(String groupName, String remoteFileName)throws Exception {storageClient = new StorageClient(trackerServer, storageServer);int i = storageClient.delete_file(groupName, remoteFileName);logger.info("delete file successfully!!!" + i);
}

使用 FastDFS 时,直接调用 FastDFSClient 对应的方法即可.

4. 编写上传控制类

从 MultipartFile 中读取文件信息,然后使用 FastDFSClient 将文件上传到 FastDFS 集群中.

public String saveFile(MultipartFile multipartFile) throws IOException {String[] fileAbsolutePath={};String fileName=multipartFile.getOriginalFilename();String ext = fileName.substring(fileName.lastIndexOf(".") + 1);byte[] file_buff = null;InputStream inputStream=multipartFile.getInputStream();if(inputStream!=null){int len1 = inputStream.available();file_buff = new byte[len1];inputStream.read(file_buff);}inputStream.close();FastDFSFile file = new FastDFSFile(fileName, file_buff, ext);try {fileAbsolutePath = FastDFSClient.upload(file);  //upload to fastdfs} catch (Exception e) {logger.error("upload file Exception!",e);}if (fileAbsolutePath==null) {logger.error("upload file failed,please upload again!");}String path=FastDFSClient.getTrackerUrl()+fileAbsolutePath[0]+ "/"+fileAbsolutePath[1];return path;
}

请求控制,调用上面方法saveFile()

@PostMapping("/upload") //new annotation since 4.3
public String singleFileUpload(@RequestParam("file") MultipartFile file,RedirectAttributes redirectAttributes) {if (file.isEmpty()) {redirectAttributes.addFlashAttribute("message", "Please select a file to upload");return "redirect:uploadStatus";}try {// Get the file and save it somewhereString path=saveFile(file);redirectAttributes.addFlashAttribute("message","You successfully uploaded '" + file.getOriginalFilename() + "'");redirectAttributes.addFlashAttribute("path","file path url '" + path + "'");} catch (Exception e) {logger.error("upload file failed",e);}return "redirect:/uploadStatus";
}

上传成功之后,将文件的路径展示到页面,效果图如下:

在浏览器中访问此Url,可以看到成功通过FastDFS展示.

这样使用 Spring Boot 集成 FastDFS 的案例就完成了.