admin管理员组文章数量:1794759
搭建一个自己的文件上传服务器。
由于看到了商城的项目,本来无心搭建那个文件上传服务器的,可是看到了人家自己使用了FastDFS服务器,我想自己怎么不能搭建呢,干就是了。
先介绍下为何使用这个东西:
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 FastDFS服务端主要有:跟踪器(tracker)群和存储节点(storage),跟踪器做调度工作,在访问上起负载均衡的作用,跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
上传交互过程编辑
下载交互过程编辑
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。
那么如何安装使用呢:
这不是集群的使用方式那么该如何在代码中使用呢求那个看下面代码:
先把fastdfs_client的客户端jar包依赖加入maven中: @Test public void testUpload() throws Exception, MyException { //trackerserver的服务器端口号为22122 //创建一个配置文件,文件名任意,内容就是tracker服务器的地址 //使用全局对象加载配置文件(必须是绝对路径) ClientGlobal.init("F:\\\\Java\\\\javaEE/e3-manager-web/src/main/resources/conf/client.conf"); //创建一个TrackerClient对象 TrackerClient trackerClient=new TrackerClient(); //通过TrackerClient获得TrackerServer对象 TrackerServer trackerServer=trackerClient.getConnection(); //创建一个引用的StorageServer的引用可以为null StorageServer storageServer=null; //创建一个StoreageClient参数需要TrackerServer和StorageServer StorageClient storageClient=new StorageClient(trackerServer,storageServer); //使用StorageClient上传文件(必须为绝对路径) String[] upload_file = storageClient.upload_file("/.jpg","jpg", null); for(String string :upload_file) { System.out.println(string); } } private /** * 用工具类的方式测试 * @throws Exception */ public void testFastDfsClient() throws Exception { FastDFSClient fastDFSClient=new FastDFSClient("F:\\\\Java\\\\javaEE/e3-manager-web/src/main/resources/conf/client.conf"); String string=fastDFSClient.uploadFile(".jpg"); System.out.println(string); } 使用工具类上传,需要建立文件夹,然后通过文件的使用需要配置value() /** * 图片上传的 * @author leoill *TODO *2019年1月6日 */ @Controller public class PictureController { @Value("IMAGE_SERVER") private String IMAGE_URL; @RequestMapping("/pic/upload") @ResponseBody public String uploadFile(MultipartFile uploadFile){ //返回String对象时直接返回的是contentType="text/plain" //把图片上传到服务器 try { FastDFSClient fastDFSClient=new FastDFSClient("classpath:conf/client.conf"); //取出扩展名 String originalFilename = uploadFile.getOriginalFilename(); //originalFilename.substring(originalFilename.lastIndexOf(".")+1) //返回一个图片的地址和文件名 String url = fastDFSClient.uploadFile(uploadFile.getBytes(), originalFilename.substring(originalFilename.lastIndexOf(".")+1)); //补充完整的URL url=IMAGE_URL+url; //封装到map Map<String, Object> map=new HashMap<>(); map.put("error", 0); map.put("url", url); return JsonUtils.objectToJson(map); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Map<String, Object> map=new HashMap<>(); map.put("error", 1); map.put("message", "图片上传失败"); return JsonUtils.objectToJson(map); } 使用前必须搭建这个服务,通过加载配置文件,把其中的数据给加载进去。以上就是fastDFS的搭建过程了,搭建过程感觉有坑,但是也在填坑。集群的方式搭建就看后来的文章吧,今天就到这里了。不明白的可以私信我。
版权声明:本文标题:搭建一个自己的文件上传服务器。 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686850671a110070.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论