首页 > 服务器 > 管理维护 > 正文

图片服务器要如何搭建

2024-09-10 14:19:16
字体:
来源:转载
供稿:网友
  一、前言
 
  分布式集群的项目,正常一般的工程是把图片放在web项目的自身服务器的工程中,但在集群环境下,会出现找不到图片的情况。
 
  代码参考:https://github.com/zyjcxc/taotao.git
 
  比如:
 
  解决办法:
 
  linux做磁盘的映射,说能解决,但服务器多了也不好弄,所以可以再搭建一个图片服务器
 
  图片服务器两个服务:
 
  http:可以使用nginx做静态资源服务器。也可以使用apache。推荐使用nginx,效率更高。也可以结合我之前的mongo文件服务器,将文件url存到Mongo中。
 
  ftp服务:使用linux做服务器,在linux中有个ftp组件vsftpd。
 
  二、步骤
 
  1、服务器需求
 
  Linux:CentOS6.4
 
  Nginx:1.8.0
 
  Vsftpd:需要在线安装。
 
  2、Nginx安装
 
  参考Nginx安装指南.
 
  3、Vsftpd安装
 
  参考Vsftpd安装指南.
 
  4、图片服务器的测试
 
  安装好环境后,可以用ftp客户端(FileZilla)测试是否能上传下载文件。
 
  ftp上传图片后,用浏览器直接访问图片路径,测试是否有图片显示。
 
  5、java代码实现上传
 
  使用apache的FTPClient工具访问ftp服务器。需要在pom文件中添加依赖:
 
  publicclassFTPClientTest{
 
  @Test
 
  publicvoidtestFtp()throwsException{
 
  //1、连接ftp服务器
 
  FTPClientftpClient=newFTPClient();
 
  ftpClient.connect("192.168.1.133",21);
 
  //2、登录ftp服务器
 
  ftpClient.login("ftpuser","ftpuser");
 
  //3、读取本地文件
 
  FileInputStreaminputStream=newFileInputStream(newFile("D://Documents//Pictures//images//2010062119283578.jpg"));
 
  //4、上传文件
 
  //1)指定上传目录
 
  ftpClient.changeWorkingDirectory("/home/ftpuser/www/images");
 
  //2)指定文件类型
 
  ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
 
  //第一个参数:文件在远程服务器的名称
 
  //第二个参数:文件流
 
  ftpClient.storeFile("hello.jpg",inputStream);
 
  //5、退出登录
 
  ftpClient.logout();
 
  }
 
  }
 
  后续可以根据需求,将其封装工具类,写service,contorller即可,截取部分代码
 
  publicMapuploadPicture(MultipartFileuploadFile){
 
  Map<String,Object>map=newHashMap<>(2);
 
  try{
 
  StringoldName=uploadFile.getOriginalFilename();
 
  StringnewName=IDUtils.genImageName();
 
  newName+=oldName.substring(oldName.lastIndexOf("."));
 
  StringimagePath=newDateTime
 
  ().toString("yyyy/MM/dd");
 
  booleanresult=FtpUtil.uploadFile(FTP_HOST,FTP_PORT,FTP_USERNAME,FTP_PASSWORD,FTP_BASE_PATH,imagePath,newName,uploadFile.getInputStream());
 
  if(!result){
 
  map.put("error",1);
 
  map.put("message","文件上传失败");
 
  returnmap;
 
  }
 
  map.put("error",0);
 
  map.put("url",IMAGE_BASE_URL+"/"+imagePath+"/"+newName);
 
  }catch(IOExceptione){
 
  map.put("error",1);
 
  map.put("message","文件上传异常");
 
  e.printStackTrace();
 
  returnmap;
 
  }
 
  returnmap;
 
  }
 
  注意:
 
  springmvc框架,在配置文件中要加入文件上传解析器
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表