java中怎么把文件上传到服务器的指定路径

java中怎么把文件上传到服务器的指定路径,第1张

UI端:

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()

        。。。 这个百度搜一下,代码很多, 这里就不在啰嗦了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/tougao/12331078.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存