解决ftp上传文件速度比较慢的问题!
问题描述:
最近在项目中遇到一个问题,每次ftp上传图片的的速度都超级慢,测试的妹子都要爆炸了,她说我就上传一个几十k的图片都点击一下要等半天,于是便给我提了一个bug要我去解决的这问题,然后我一边开始debug代码,一边去网上找解决方案!
找出原因:
ftp上传文件速度慢主要有两方面的原因:
1.网络问题,网速限制,并且没使用缓冲流来操作,导致上传的速度比较慢!
2.登录ftp与ftp建立连接比较慢
最终得到如下三种解决方案:
方案一:针对网速差,读取文件的速度慢,可以使用缓冲区来提高效率!
项目源码如下:
public static boolean upload(String ftpUrl, File file,String areaDeviceImgPath,String newFileName)throws Exception{FtpConfInfo infoConf = getInfo(ftpUrl);if(infoConf == null){return false;}FTPClient ftpclient = connectServer(infoConf); if(ftpclient == null){log.error("构建FTP客户端失败");}if(infoConf.getLocation()!=null){String[] ss = infoConf.getLocation().split(Constants.SEPARATOR);for(String s :ss){if(!existDirectory(ftpclient,s)){ftpclient.mkd(s);}ftpclient.changeWorkingDirectory(s);} }FtpUtil.fileMkDir(ftpclient,areaDeviceImgPath);InputStream is = null;boolean bool = false;try { ftpclient.enterLocalPassiveMode();is =new FileInputStream(new File(file.getAbsolutePath()));bool = ftpclient.storeFile(newFileName,is);ftpclient.changeToParentDirectory();ftpclient.logout();closeServer(ftpclient);if(bool){log.info("文件传输到FTP成功");}else {log.info("文件传输到FTP失败");}} catch (Exception e) {log.error(e);}finally{is.close();}return bool;}
改进后的代码如下:
public static boolean upload(String ftpUrl, MultipartFile file,String areaDeviceImgPath,String newFileName)throws Exception{FtpConfInfo infoConf = getInfo(ftpUrl);if(infoConf == null){return false;}FTPClient ftpclient = connectServer(infoConf); if(ftpclient == null){log.error("构建FTP客户端失败");}if(infoConf.getLocation()!=null){String[] ss = infoConf.getLocation().split(Constants.SEPARATOR);for(String s :ss){if(!existDirectory(ftpclient,s)){ftpclient.mkd(s);}ftpclient.changeWorkingDirectory(s);}}FtpUtil.fileMkDir(ftpclient,areaDeviceImgPath);//InputStream is = null;BufferedInputStream input= null;boolean bool = false;try {ftpclient.enterLocalPassiveMode();//is = file.getInputStream();ftpclient.setBufferSize(1024*1024);byte [] fileBytes=file.getBytes();input= new BufferedInputStream( new ByteArrayInputStream(fileBytes));bool = ftpclient.storeFile(newFileName,input);ftpclient.changeToParentDirectory();ftpclient.logout();closeServer(ftpclient);if(bool){log.info("文件传输到FTP成功");}else {log.info("文件传输到FTP失败");}} catch (Exception e) {log.error("文件上传失败:" + e);return false;}finally{input.close();}return bool;}
问题:关于java的io读写,缓冲区是如何提高读写效率的?
https://blog.csdn.net/zealot_2002/article/details/8231194
该博客讲述很明白
方案二:针对建立连接慢的解决方案
如下解决
vi /etc/vsftpd/vsftpd.conf
在vsftpd.conf文件中加入:reverse_lookup_enable=NO
保存后重新启动vsftpd: service vsftpd restart
点击查看ftp的配置
方案三:同样是针对建立连接慢的解决方案
分析问题:既然他建立连接慢,也就是说他建立连接不容易,既然不容易我就让他建立连接以后一直保持连接。但是此种方式对资源的耗费很高,不建议这么做。
具体实现思路如下(单例模式+定时器+锁):
解决ftp上传文件速度比较慢的问题!相关推荐
- 解决FTP上传文件速度慢的问题
我们在利用ftp的storeFile()上传存储文件的时候,为了让上传速度提升,建议采用添加缓冲区的方式,根据上传文件的大 小,设置缓冲区大小,上传的过程中,缓冲区写满后才会进行磁盘的读写 ...
- FTP上传文件速度太慢怎么办?
用户在建设网站时必不可少的一类工具就是文件传输工具.通过客户端和主机之间的文件交互,及时上传补丁文件.下载日志文件等,确保网站的正常稳定运行.但是也有不少用户反映使用FTP上传文件速度太慢,这是什么原 ...
- 解决xshell上传文件速度为0的方法
连接服务器cd切换到主目录执行以下命令 如果在xshell下上传文件速度一直为0,可以尝试安装 yum -y install lrzsz 亲测,实用!
- ftp服务器上传文件频率,ftp服务器上传文件速度多少
ftp服务器上传文件速度多少 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 使 ...
- xshell 上传文件 速度为0的解决方法
如果在xshell下上传文件速度一直为0,可以尝试安装 yum -y install lrzsz 亲测,实用!
- java ftp上传文件相关代码梳理
java实现ftp文件上传 1.ftp文件上传步骤 1)连接ftp 2)检查工作目录是否存在 3)检查是否上传成功 4)完成任务后,断开ftp 2.具体如下,直接贴上核心代码: A)导入核心pom依赖 ...
- php实现ftp上传,PHP_PHP实现ftp上传文件示例,FTP上传是PHP实现的一个常见且 - phpStudy...
PHP实现ftp上传文件示例 FTP上传是PHP实现的一个常见且非常重要的应用技巧,今天就来与大家分享一下PHP实现FTP上传文件的简单示例.希望对大家的PHP学习能带来一定的帮助. 主要代码如下: ...
- ftp上传文件 严重文件传输错误
如果对您有帮助,请点赞告诉我,如果没有解决您的疑惑,请您留言,我陪您一起努力解决! ftp上传文件出现553 Could not creat files 严重文件传输错误 在linux下执行 chmo ...
- win10系统上传服务器很慢,win10系统上传文件速度太缓慢
在日常的工作另一个还可以学习途中中,有时我们需要上传一些文件.很多朋友在使用win10电脑上传途中中发现速度非常缓慢,像果一次性上传很多文件,过缓慢的速度会消磨很多时间,从但是影响到用户的工作另一个还 ...
最新文章
- 三菱PWM格式文件梯形图编码格式
- hdu5126stars
- 如何高效安全的将资源同步到本地数据库
- php调用C代码的方法详解和zend_parse_parameters函数详解
- Java多线程(六)之Deque与LinkedBlockingDeque深入分析
- JDK5.0新特性--可变参数
- 微信小程序中app.js文件、组件、api
- 循环比赛日程表(信息学奥赛一本通-T1325)
- 无意中最大的收获:《构建高性能Web站点》
- 自定义头文件之二------hlib.h(慢慢更新)
- 几行代码就能实现为何要多此一举
- 雷云3计算机不满足系统要求,电工进网作业许可考试(高压类)4、5、6章题库(无答案)...
- Gravity:环形二维码扫描识别传感器详细介绍和工作原理
- 企业级项目实战讲解!我凭借这份PDF的复习思路,薪资翻倍
- 实不相瞒,我做海外TikTok搬运视频一年的收入,可能是你10年的工资
- 步进电机基础(2.1)- 定子相数的分类、结构、原理
- 广义表的长度,深度及复制广义表的算法
- Linux-Udev机制
- 【GPGPU编程】GPGPU架构剖析之谓词寄存器
- 解决PHP报错:Call to undefined function array_column()
热门文章
- 包过滤、状态化、七层防火墙
- 从吉日嘎拉那里学到的……
- 【Rust技术公开课】港哥Elton自主开发的协程库解析-CSDN公开课-专题视频课程
- SOHOy一族怎么样网上赚钱
- 步进电机不转,步进电机驱动器的线已接好,但它就是不转,MF- MF+ (无)PU- PU+ DR- dr+的线已经接好
- Python通过RS232通讯控制步进电机
- 怎样查找mysql驱动。
- 福师计算机辅助设计1PS在线作业二,《计算机辅助设计1(ps)》在线作业一试卷(最新).doc...
- python爬虫selenium账号和密码_selenium + python 登录页面,输入账号、密码,元素定位问题...
- 在军校学计算机出来能干什么,对军校非计算机专业计算机基础课程设置的一些思考.pdf...