目录

实现策略:

1.通过java 上传技术实现文件从客户端上传到服务器某个位置

2.服务器上传到的位置采用共享文件夹的方式实现,这样易于扩展

3.通过nginx服务器配置

4.location /0/的方式实现无线扩展

5.root 配置的内容系统的共享文件夹,越大越好

6.用户提交文件java 后台吧文件存放到 root后的文件夹中

7.当一个共享文件夹内部快放满的时候,我们新建一个新的 location

8.这样在用户访问文件服务器的时候回自动寻找自己的图库地址


实现策略:

1.通过java 上传技术实现文件从客户端上传到服务器某个位置

package com.supermap.file;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import com.supermap.uitl.DateTimeUitl;import java.io.File;
import java.io.IOException;
import java.util.UUID;import javax.servlet.http.HttpSession;/*** 文件上传类* * @author yushen**/
@Controller
public class UploadController {/*** 创建日志* */private static final Log LOGGER = LogFactory.getLog(UploadController.class);//获取基础文件服务路径地址(入服务器id,服务器文件服务路径)0代表第一个太文件服务器@Value("${image.location.path}")private String Basicspath;    @Value("${image.location.library}")//获取库存放地址private String resourcelibrary;/*** 文件上传方法* * @param file* @param session* @return*/@RequestMapping("/Upload")@ResponseBodypublic String Upload(@RequestParam("file") MultipartFile file,HttpSession session) {//通过session 获取用户的id 生成用户id库路径Integer user = (Integer) session.getAttribute("user");if(user == null) {return "上传失败,没有用户信息!";}//记录日志LOGGER.info(new StringBuffer("用户:"+user)+"开始上传文件!");//文件判断为空if (file.isEmpty()) {return "上传失败,请选择文件";}//获取文件原始名称String fileOriginalName = file.getOriginalFilename();//设置文件前缀String fliePrefix = "";//设置文件后缀String fileSuffix = "";//校验文件名安全性if(fileOriginalName.indexOf(".") != -1) {//判断事包含带有结尾符的文件//只支持上传jpg和png格式文件图片if(fileOriginalName.split("\\.")[1].equals("png") || fileOriginalName.split("\\.")[1].equals("jpg")) {fliePrefix = UUID.randomUUID().toString().replace("-", "");fileSuffix = fileOriginalName.split("\\.")[1];} else {return "上传失败,上传文件类型不是png和jpg格式!";}}//系统设置路径String newfilePath = resourcelibrary + DateTimeUitl.nowTimeA +"/" + user + "/" ;//唯一服务地址String newfilePathOnly = Basicspath +newfilePath;//判断地址是否存在File fileUIS = new File(newfilePathOnly);  if(!fileUIS.exists()){//如果不存在文件夹创建文件夹fileUIS.mkdirs();  } String OnlyStr = newfilePathOnly + fliePrefix + "." + fileSuffix;//设置文件载入到的地址File dest = new File(OnlyStr);try {file.transferTo(dest);LOGGER.info("文件:"+fliePrefix + "." + fileSuffix+"上传成功");return "上传成功,文件地址:" + newfilePath+fliePrefix + "." + fileSuffix;} catch (IOException e) {LOGGER.error(e.toString(), e);}return "上传失败!";}}

配置文件 application.properties

#路径/
image.location.path=f:/serverImagel/
#文件存放库地址
image.location.library=0/

一个文件中放不下的时候就修改一下这个地址

#路径/
image.location.path=R:/serverImagel/
#文件存放库地址
image.location.library=1/

2.服务器上传到的位置采用共享文件夹的方式实现,这样易于扩展

3.通过nginx服务器配置 

server {listen       80;#配置静态图片服务器地址location /0/ {#为方便之后扩展文件服务器没一个库用一个单独的0开头#这个地址放在那里可以随意最好采用共享磁盘的方式,这样就可以无限扩展root   F:\serverImagel;}}

4.location /0/的方式实现无线扩展

5.root 配置的内容系统的共享文件夹,越大越好

6.用户提交文件java 后台吧文件存放到 root后的文件夹中

7.当一个共享文件夹内部快放满的时候,我们新建一个新的 location

location /1/ {#为方便之后扩展文件服务器没一个库用一个单独的0开头#这个地址放在那里可以随意最好采用共享磁盘的方式,这样就可以无限扩展root   E:\serverImagel;}

当然如果公司的用户量特别大那么可以写个小程序,按照用户的文件增长水平写一个心跳的监控

当发现服务器某个盘符快满的时候,就让代码自动修改配置文件 (一个修改java的,一个增加nginx的)

增加nginx的方式可以每次增加完毕后,记录上次增加的行数,对应算出下一次本次需要增加行数的位置

这样就实现了Tracker追踪器。

8.这样在用户访问文件服务器的时候回自动寻找自己的图库地址

文件上传web

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body><form action="http://localhost:8080/2/serviceUpload" enctype="multipart/form-data"  method="POST" >上传文件:<input type="file" name="file"/><br><input type="submit" value="提交" /></form>
</body>
</html>

访问地址:

http://localhost/0/20181204/1000000001/e0973b2185094765af4d9054aa90f059.jpg

域名加服务器返回的地址,将这个地址存入到自己的服务器数据库中即可

最后就是数据同步:

这个就是磁盘备份从网上找找就好特别多

比如 微软官方出品的文件备份软件 SyncToy  可以支持 1)安全2)稳定

比较是微软自己的比起普通的软件强了特别多大家如果没别的常用软件可以试试这个。网上教程也挺多的可以去瞧瞧

最近项目需要个文件服务器,但是看了下市场上的文件服务器,感觉搭建步骤看api文档等情况太繁琐,不想看,于是就自己研究建了一个,感觉还是自己做出来的用的方便,有兴趣的可以一起聊聊

qq:1251767927

java springboot + nginx 自建 文件集群服务器相关推荐

  1. 文件集群服务器怎么搭建,一台云服务器怎么搭建集群

    一台云服务器怎么搭建集群 内容精选 换一换 共享云硬盘是一种支持多个云服务器并发读写访问的数据块级存储设备,具备多挂载点.高并发性.高性能.高可靠性等特点.主要应用于需要支持集群.HA(High Av ...

  2. Linux(Nginx)+Java SpringBoot视频微服务搭建

    最近收到一个需求,需要把视频集成为一个服务,视频播放时根据登录的用户名动态生成水印覆盖在视频上: 这些视频隔段时间会来一波,需要集成进去: 最初的解决方案:把视频当作静态资源放在Java Spring ...

  3. Java高级架构之FastDFS分布式文件集群

    FastDFS简介 FastDFS是一款开源的轻量级分布式文件系统,使用C实现,支持Linux.BSD等unix-like操作系统.值得注意的是,fastdfs并不是通用的文件系统,只能通过专用的AP ...

  4. 集群服务器下使用SpringBoot @Scheduled注解定时任务

    原文:https://blog.csdn.net/huyang1990/article/details/78551578 SpringBoot提供了 Schedule模块完美支持定时任务的执行 在实际 ...

  5. java jwks_Java SpringBoot 如何使用 IdentityServer4 作为验证服务器学习笔记

    这边记录下如何使用IdentityServer4 作为 Java SpringBoot 的 认证服务器和令牌颁发服务器.本人也是新手,所以理解不足的地方请多多指教.另外由于真的很久没有写中文了,用词不 ...

  6. Java程序员花十个月做私活,收入50w+,网友:老哥建个群搭个伙呗

    私活,是很多程序员增加收入的有效途径,通过承接项目,通过自己的程序能力转化为收入.在互联网匿名社区,一些同行开始交流起私活收入. 如果有想学习java的同学,可来我们的java技术学习QQ群的哦:74 ...

  7. 用香港服务器建收费网站,使用香港站群服务器搭建网站的好处有哪些?

    香港站群服务器搭建网站的作用: 1.香港站群服务器有利于提高网站被搜索引擎收录情况; 2.搭建站群能够有效降低网站被封的风险; 3.当网站遭受攻击时,可快速通过带有独立IP的网站来查出问题所在,从而有 ...

  8. 家用自建服务器集群,什么是服务器集群,怎样搭建集群服务器?

    什么是服务器集群? 集群,英文名称为Cluster,通俗地说,集群是这样一种技术:它将多个系统连接到一起,使多台服务器能够像一台机器那样工作或者看起来好像一台机器.采用集群系统通常是为了提高系统的稳定 ...

  9. Nginx以及通过Nginx实现tomcat集群配置与负载均衡

    Nginx简介 启动,停止,和重新加载配置文件命令 Nginx功能 正向代理和反向代理的区别 反向代理 负载均衡 1.RR(默认) 2.权重 3.ip_hash 4.fair(第三方) 5.url_h ...

最新文章

  1. Django的模板继承
  2. Linux下往移动硬盘拷贝数据步骤方式
  3. hadoop学习01 网址收集
  4. 巨头入局,华为云将给音视频行业带来什么?
  5. C——用冒泡排序法、选择排序法对随机输入的10个整数从小到大排序
  6. 关于Dev-C++的安装以及基本使用方法
  7. 【C++】C++读取文本中的特定一列
  8. Flask使用ajax进行前后端交互
  9. 基于张量秩一分解的多目标跟踪方法
  10. Android 修改actionbar标题的颜色和背景色
  11. [网络安全自学篇] 八十八.基于机器学习的恶意代码检测技术详解
  12. ZOJ 3527 Shinryaku! Kero Musume 【树形DP[带简单环]】
  13. USB的SIE串行接口引擎
  14. Vue如何监视屏幕尺寸变化
  15. 踩坑前端框架 - iview DatePicker 时间选择年月日时分秒
  16. POJ-3311 Hie with the Pie
  17. 为什么大学生活这么充实(累)
  18. 小程序报错 Invalid regular expression: invalid group specifier name
  19. 光纤接续为什么不建议一管多熔?
  20. 原创 基于微信小程序毕业设计题目选题课题 羽毛球篮球足球乒乓球场地球馆预约小程序的设计与实现(3)我的预约列表

热门文章

  1. R语言使用lm函数构建多元回归模型(Multiple Linear Regression)、使用step函数筛选最合适的回归变量(逐步回归筛选预测变量的最佳子集)
  2. 资源 | 分享几个强大的网站
  3. 解析SNS社区产品架构模型,互联网营销
  4. Advertising on YouTube 如何在YouTube发布广告 Lynda课程中文字幕
  5. HTML555基础——css入门
  6. 手机作为扩展屏——Xdisplay使用教程
  7. 本地字节序与网络字节序的相互转换(IP地址、端口号)
  8. 微信内置浏览器的JsAPI(WeixinJSBridge续)
  9. STM32和OV7670的串口上位机调试
  10. 树莓派安装系统之无显示器(最新版)