近段时间java代码向服务器上传文件的代码。可是屡试不行。很是郁闷。最终还是完成了。自己也总结了许多上传中的错误及解决分析,都是自己自己总结的,若有什么理解错误,欢迎大家留下宝贵意见,还有很多不懂得大家一起深入了解。在此谢过了

下面附上代码。

jar包我资源里免费的,欢迎大家下载。

package net.rytong;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;

import org.apache.commons.net.ftp.FTPReply;

/**

*

* @author zhou_dong

*

*  服务器上传文件 2014-03-07 17:03

*/

public class MyFTP {

public static void main(String[] args) {

File imagefile=newFile("D:/var/iosclient.jpg");

String imagefileFileName="苹果.jpg";

//创建ftp客户端

FTPClient ftpClient=newFTPClient();

ftpClient.setControlEncoding("GBK");

String hostname="192.168.xx.xx";

int port=21;

String username="root";

String password="rytongxxxxxxx";

try {

//链接ftp服务器

ftpClient.connect(hostname, port);

//登录ftp

ftpClient.login(username, password);

int  reply=ftpClient.getReplyCode();

System.out.println(reply);

//如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限下面有详细的解释。

if (!FTPReply.isPositiveCompletion(reply)) {

ftpClient.disconnect();

return ;

}

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

ftpClient.makeDirectory("path");//在root目录下创建文件夹

String remoteFileName=System.currentTimeMillis()+"_"+imagefileFileName;

InputStream input=newFileInputStream(imagefile);

ftpClient.storeFile(remoteFileName, input);//文件你若是不指定就会上传到root目录下

input.close();

ftpClient.logout();

} catch (SocketException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally

{

if (ftpClient.isConnected())

{

try

{

ftpClient.disconnect();

} catch (IOException ioe)

{

ioe.printStackTrace();

}

}

}

}

}

在运行是遇到的错误

(一):

这个错误总是遇到困惑我好久,后来就查资料发现,是因为端口号的问题;我们上传问价遵循ftp协议,而一般文件传输的ftp端口默认是21和20,而22是ssh服务的端口。这个错误不小心就发生的。注意了!

(二):

这种错误经常遇到,还是原因最多的,最令人头疼的。在这我只是总结了部分原因:

1:先看linux服务器的防火墙关了没。service iptables stop 关闭防火墙。这算一个错误。

2:若是防火墙关了,还报此错误。你可以继续排查。看linux是否有ftp服务。

你可以使用 service vsftpd status 来查看ftp是否开启。(vsftpd is running...,是说明目前ftp是开启状态),chkconfig --list vsftpd 也是查看ftp服务是否开启(netstat -tnl也可以查询21端口是否开启)。

也可以使用ps -ef | grep ftp 来查看本地是否含有包含ftp的进程开启。(看ftp22端口是否使用)。

总之第二个原因就是服务器是否有ftp服务。若没有你要自己安装ftp服务器,若有,而是没有启动你可以启动ftp服务(使用service vsftpd start 启动 或者 service vsftpd restart 重启)。

(三):就是你连接上了,只是ftpClient.getReplyCode()的返回值是530,那么就是因为你当前用户没有传输文件的权限,先提供如下解决办法。

一般root用户是有权限的若是root还返回530,就用一下方法:先查看/etc/vsftpd/下面的文件ftpusers和user_list里面是否有你的用户名,若有注释就可以了。这两个文件中的用户都是没有权限。(亲测土办法!)    ; 给用户添加ftp权限:以下步骤是在网上搜的没有亲测,大家可以试试。 在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1、环境:ftp为vsftp。被限制用户名为test。被限制路径为/home/test 2、建用户:在root用户下: useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test passwd test //为test设置密码 3、更改用户相应的权限设置: usermod -s /sbin/nologin test //限定用户test不能telnet,只能ftp usermod -s /sbin/bash test //用户test恢复正常 usermod -d /test test //更改用户test的主目录为/test 4、限制用户只能访问/home/test,不能访问其他路径 修改/etc/vsftpd/vsftpd.conf如下: chroot_list_enable=YES //限制访问自身目录 # (default follows) chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行 改完配置文件,不要忘记重启vsFTPd服务器 [root@linuxsir001 root]# /etc/init.d/vsftpd restart 5、如果需要允许用户修改密码,但是又没有telnet登录系统的权限: usermod -s /usr/bin/passwd test //用户telnet后将直接进入改密界面 看到230,恭喜你。总算大功告成了!!!哎、、、不容易哈! 最后附上ftpClient.getReplyCode()的返回值的对应信息: 110  重新启动标记应答。在这种情况下文本是确定的,它必须是:MARK   yyyy=mmmm,其中yyyy是用户进程数据流标记,mmmm是服务器标记。      120     服务在nnn分钟内准备好      125     数据连接已打开,准备传送      150     文件状态良好,打开数据连接      200     命令成功      202     命令未实现      211     系统状态或系统帮助响应      212     目录状态      213     文件状态      214     帮助信息,信息仅对人类用户有用      215     名字系统类型      220     对新用户服务准备好      221     服务关闭控制连接,可以退出登录      225     数据连接打开,无传输正在进行      226     关闭数据连接,请求的文件操作成功      227     进入被动模式      230     用户登录      250     请求的文件操作完成      257     创建 "PATHNAME "      331     用户名正确,需要口令      332     登录时需要帐户信息      350     请求的文件操作需要进一步命令      421     不能提供服务,关闭控制连接      425     不能打开数据连接      426     关闭连接,中止传输      450     请求的文件操作未执行      451     中止请求的操作:有本地错误      452     未执行请求的操作:系统存储空间不足      500     格式错误,命令不可识别      501     参数语法错误      502     命令未实现      503     命令顺序错误      504     此参数下的命令功能未实现      530     未登录(用户名或密码错误,1、FTP密码修改了?2、用户名/密码输入错误?先仔细检查有无输入错误   如复制的时候误复制了空格!!)      532     存储文件需要帐户信息      550     未执行请求的操作      551     请求操作中止:页类型未知      552     请求的文件操作中止,存储分配溢出      553     未执行请求的操作:文件名不合法

linux java 文件上传到服务器_java代码实现文件上传到linux服务器及问题汇总及解决...相关推荐

  1. java下载文件到服务器_java代码实现上传文件到文档服务器、下载文档服务器文件...

    需要完成下载->修改->上传这三个步骤 平台有提供对应的api吗? /** 首先我们来理解下关于文档的api 文档相关api都在这2个package下面 package :com.just ...

  2. java文件上传控件_java实现大文件上传控件

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  3. java程序 部署服务器_Java代码如何布署到云服务器

    Java代码如何布署到 前两种方式的优点是方便快捷,缺点是要花几元到几十块钱.手动部署方式正好与前两种方式相反,它的优点是免费,同时修炼了你的技术,缺点就是比较费事. 如果不差钱或者时间紧迫的话,你可 ...

  4. java读取 info.plist源码_Java 解析 IPA 文件,读取 Info.plist 信息-Go语言中文社区

    在做移动MDM功能的时候,就遇到了这样一个问题,当用户上传IPA文件时,我如何知道这个IPA文件的相关信息呢?IPA文件有一个很重要的文件Info.plist 就类似于Android程序的Manife ...

  5. java对文件的操作详解_Java 对 Properties 文件的操作详解及简单实例

    Java 对 Properties 文件的操作详解及简单实例 发布于 2020-8-7| 复制链接 摘记: Java 对 Properties 文件的操作简介在 Java 中,我们常用 java.ut ...

  6. java 导出excel打开报错_java导出excel文件报“失败-网络错误”

    问题描述 用IP访问单个服务器去下载excel文件正常,访问F5去下载的时候报"失败-网络错误" 项目截图(必填) 运行截图(必填) 相关代码片段 response.reset() ...

  7. java中 复制到下一行_java代码复制到下一行

    java代码复制到下一行 [2021-02-10 13:04:40]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...

  8. java表盘时钟的设计思路_java代码实现时钟

    实现效果如图: Java代码: 文件一:ClockPanel.java importstaticjava.util.Calendar.HOUR;importstaticjava.util.Calend ...

  9. java dao层编写及注释_JAVA代码注释规范

    2. 班级: 班级的目的,即班级完成的功能,以及班级的创建时间和作者姓名:当多个人一次编辑或修改同一个班级时, 作者姓名中应出现多个姓名: 3. 接口: 在满足类注释的基础上,接口注释应包含设置接口的 ...

  10. 怎么用java构建哈夫曼树_Java代码构造哈夫曼树

    1.问题描述 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法.其压缩率通常在20%-90%之间.哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式.一个包含1 ...

最新文章

  1. SqlDataReader执行带输出参数存储过程 错误分析
  2. [leetcode] 367. Valid Perfect Square
  3. linux find xargs grep查找给定路径下目标字符串所在文件
  4. java视频教程不同阶段看哪些
  5. 探讨LoadRunner的并发用户和集合点
  6. 2021安徽省计算机应用基础,安徽省高等教育自学考试2021年4月课程考试时间安排表.pdf...
  7. SolarWinds 攻击者开发的新后门 FoggyWeb
  8. python数学实验与建模_Python数学
  9. Windows 98 不同用途启动盘制作(转)
  10. 类似switchhost 的简单host切换工具
  11. 分解GIF图片、合成GIF图片
  12. ubuntu软件商店提示has install-snap change in progress问题
  13. unity屏幕渐变黑白效果
  14. ps cc下载地址及破解教程
  15. STM32控制电机简易教程
  16. 一文带你入门go语言
  17. 图码详解算法|理解八大思想,胜刷百道力扣!
  18. 现代计算机理论模型与工作原理
  19. 百度地图setMapStyle
  20. 解决:Cause: java.sql.SQLException: Field ‘id‘ doesn‘t have a default value

热门文章

  1. shell将脚本输出结果记录到日志文件
  2. 字段、数据库表-三大范式及存储方式-by小雨
  3. Winform的html编辑控件htmleditor 有时候无法为里面HTML属性初始化
  4. DedeCms网站防挂马注意点
  5. 第2章 理解memcached的内存存储
  6. Luogu1502 窗口的星星
  7. groupmod 修改用户组信息
  8. java实践体会,java实践心得体会范文3篇
  9. printf linux 头文件,printf()函数 [转]linux调用动态库so文件(2)
  10. python最新版安装图集_[python] plist图集拆分小图