Linux云服务器搭建SFTP服务器图片服务器(1)

flag=true;

return flag;

} else {

flag=false;

return flag;

}

} catch (Exception e) {

flag=false;

return flag;

}

}

/**

  • 下载文件

  • @param directory

  •        下载目录
    
  • @param downloadFile

  •        下载的文件
    
  • @param saveFile

  •        存在本地的路径
    
  • @param sftp

*/

public String download(String directory, String downloadFile,

String saveFile, ChannelSftp sftp) {

String result = “”;

try {

sftp.cd(directory);

sftp.get(downloadFile, saveFile);

result = “下载成功!”;

} catch (Exception e) {

result = “下载失败!”;

LOG.info(“下载失败!”, e);

;

}

return result;

}

/**

  • 删除文件

  • @param directory

  •        要删除文件所在目录
    
  • @param deleteFile

  •        要删除的文件
    
  • @param sftp

*/

public String delete(String directory, String deleteFile, ChannelSftp sftp) {

String result = “”;

try {

sftp.cd(directory);

sftp.rm(deleteFile);

result = “删除成功!”;

} catch (Exception e) {

result = “删除失败!”;

LOG.info(“删除失败!”, e);

}

return result;

}

private void closeChannel(Channel channel) {

if (channel != null) {

if (channel.isConnected()) {

channel.disconnect();

}

}

}

private void closeSession(Session session) {

if (session != null) {

if (session.isConnected()) {

session.disconnect();

}

}

}

public void closeAll(ChannelSftp sftp, Channel channel, Session session) {

try {

closeChannel(sftp);

closeChannel(channel);

closeSession(session);

} catch (Exception e) {

LOG.info(“closeAll”, e);

}

}

}

工具类不需要修改直接使用即可。

还有一个随机生成文件名称的工具类也发给大家

import java.util.Random;

public class IDUtils {

/**

  • 生成随机图片名

*/

public static String genImageName() {

//取当前时间的长整形值包含毫秒

long millis = System.currentTimeMillis();

//加上三位随机数

Random random = new Random();

int end3 = random.nextInt(999);

//如果不足三位前面补0

String str = millis + String.format(“%03d”, end3);

return str;

}

}

六,后台请求方法看看

============

博主这里用了 Clipboard 上传,参数不支持序列化所以就一个个接受了,很多@RequestParam(“file”) MultipartFile file,加其他参数加上是post请求方式有的会报错把post请求方法找不到,这个问题不影响。

@Log(“网站案例上传信息”)

@ResponseBody

@PostMapping(“/upload”)

@RequiresPermissions(“common:cases:upload”)

R upload(@RequestParam(“file”) MultipartFile file,@RequestParam(“ctitle”) String ctitle, @RequestParam(“cmessage”) String cmessage,

@RequestParam(“casetroduction”) String casetroduction,@RequestParam(“strdate”) Date strdate,@RequestParam(“stpdate”) Date stpdate,

@RequestParam(“credate”) Date credate,HttpServletRequest request) throws ParseException, IOException {

String oldName = file.getOriginalFilename();

//使用IDUtils工具类生成新的文件名,新文件名 = newName + 文件后缀

String newName = IDUtils.genImageName();

newName = newName + oldName.substring(oldName.lastIndexOf(“.”));

SftpUtils ft = new SftpUtils();

//通过SFtoInfo 参数连接传入参数即可

Session s = ft.getSession(SFTPInfo.SFTP_REQ_HOST,SFTPInfo.SFTP_DEFAULT_PORT, SFTPInfo.SFTP_REQ_USERNAME,SFTPInfo.SFTP_REQ_PASSWORD);

Channel channel = ft.getChannel(s);

ChannelSftp sftp = (ChannelSftp)channel;

Boolean upload = ft.uploadFile(sftp,SFTPInfo.basePath, file.getInputStream(),newName);

if(upload){

//上传成功关闭信息

ft.closeAll(sftp, channel, s); //关闭连接

CasesDO cases=new CasesDO();

cases.setCtitle(ctitle);

// 这里很重要 这是访问路径写入到数据库的路径加线上域名访问图片的路径,博主这里加了ssl证书

// https://..com/images newName=文件名图片

cases.setCaseimg(SFTPInfo.baseUrl + “/” + newName);

cases.setCasetroduction(casetroduction);

cases.setStpdate(stpdate);

cases.setCredate(credate);

cases.setStrdate(strdate);

cases.setCmessage(cmessage);

if (casesService.save(cases) > 0) {

return R.ok(“上传成功”);

}

}else {

return R.error(“上传error”);

}

return R.error();

}

看看前台js------请求参数大家可以换成HashMap但是后台会用Object转其他类型转俩次

var clipboard = new Clipboard(‘button.copy’, {

text: function (trigger) {

layer.msg(‘文件路径已复制到粘贴板’);

return $(trigger).attr(‘url’);

}

});

layui.use(‘upload’, function () {

var upload = layui.upload;

//执行实例

upload.render({

elem: ‘#test1’, //绑定元素

url: ‘/common/cases/upload’, //上传接口

size: 100000,

// auto: false,

accept: ‘file’,

//bindAction: ‘#submits’,

before: function (obj) {

//obj参数包含的信息,跟 choose回调完全一致。其中输入向后台传输的参数

layer.load();

this.data = {

ctitle: $(‘#ctitle’).val(),

cmessage: $(‘#cmessage’).val() ,

casetroduction: $(‘#casetroduction’).val()

,strdate: $(‘#strdate’).val()

,stpdate: $(‘#stpdate’).val()

,credate: $(‘#credate’).val(),

};

},

done: function ® {

parent.layer.msg(r.msg);

parent.reLoad();

var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引

parent.layer.close(index);

},

error: function ® {

layer.msg(r.msg);

}

});

});

成功后报存到数据库-------

七,页面我就不展示了,这里上传成功过后图片在SftpInfo类的  /usr/games/images路径也就是服务器路径地址

===============================================================

上传成功后就在这个路径了。如果不是root用户一定要给权限 chmod 777 /usr/gemes/

八,下面就是nginx配置 (这里nginx我就不说安装方法自行百度)

===================================

最关键一步这里就是通过这个nginx路径指向到上传图片路径,autoIndex on;是开启浏览, alias 是直接指向

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值