
1.使磁盘的目录结构在界面上以树形结构展现
2.上传表单包含1中的磁盘目录树(普遍为下拉树),当用户上传文件前可以指定上传目录
服务端:
1.遍历所在服务器磁盘,或通过远程调用遍历其他服务器磁盘
2.处理UI端表单提交数据
SftpUtil2 :
测试程序:
该程序使用多线程并发 *** 作闹棚sftp,在多线程中共用一个 ChannelSftp ,就会出异常,具体如下:
在 SftpUtil 中使用ThreadLocal包装ChannelSftp、Session保证线程安全。
在 Test3 中使用 parallelStream().forEach 完成多线程并发 *** 作 sftp 。
SftpUtil
Test3 :
使用单线程上传 1458 个文件,每个 500kb ,进行三次测试,平均耗时为: 68732 毫秒
使用多线程上传 1458 个文件,每个 500kb ,进行三次测试,平均耗时为: 67117 毫秒
通过测试,可以看到使液锋则用多线程 *** 作确实能提升效率,但是,其提升非常有限,却带来了较高的复杂性,在使用中更加建议通过单线程的方式。如果,需要将sftp封装成工基含具类供他人使用,需要提醒多线程并发的问题,或为了保险起见,也可以在sftp工具类中使用 ThreadLocal 包装 ChannelSftp 和 Session 。
必须是可以的啊, 配合 jsch.jar(ftp文件上传使用) 使用。
Controller 源码中已经提供两个获取 批量上传的文件 方法
public List<UploadFile> getFiles(String uploadPath, int maxPostSize) {
if (request instanceof MultipartRequest == false)
request = new MultipartRequest(request, uploadPath, maxPostSize)
return ((MultipartRequest)request).getFiles()
}
滑枝
public List<UploadFile> getFiles(String uploadPath) {
if (request instanceof MultipartRequest == false)
request = new MultipartRequest(request, uploadPath)
return ((MultipartRequest)request).getFiles()
}
获取 到 List<UploadFile>文件集合之后, 再使用 jsch.jar 进行ftp文件上传到其他服务器
JSch jsch = new JSch()Session sshSession = 信芦敏jsch.getSession(this.username, this.host, this.port)
sshSession.setPassword(password)
Properties sshConfig = new Properties()
sshConfig.put("StrictHostKeyChecking", "no")
sshSession.setConfig(sshConfig)
哗改 sshSession.connect(20000)
Channel sftp = sshSession.openChannel("sftp")
sftp.connect()
。。。 这个百度搜一下,代码很多, 这里就不在啰嗦了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)