电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java實現FTP文件上傳

瀏覽:46日期:2022-08-12 09:47:28
目錄一、配置FTP文件服務器FTP兩種模式簡介PORT(主動模式)Passive(被動模式)1、安裝vsftpd2、配置vsftpd3、重啟啟動服務4、登錄二、java上傳文件到FTP一、配置FTP文件服務器

以Ubuntu為例

FTP兩種模式簡介PORT(主動模式)

第一步FTP客戶端首先隨機選擇一個大于1024的端口p1,并通過此端口發送請求連接到FTP服務器的21號端口建立TCP連接,在FTP中這個連接叫做控制連接,連接成功建立后,FTP客戶端會發送port命令,緊接著FTP客戶端會監視自己的p1+1端口,FTP服務器接收到port命令會從自己的20號端口向FTP客戶端的p1+1端口發起請求建立TCP連接,這個連接叫做數據連接,用來發送數據,數據傳輸完畢后數據連接隨即關閉,控制連接保持開啟

Passive(被動模式)

在建立控制連接的時候和主動模式類似,但建立連接后發送的不是Port命令,而是Pasv命令。FTP服務器收到Pasv命令后,隨機打開一個臨時端口(也叫自由端口,端口號大于1023小于65535)并且通知客戶端在這個端口上傳送數據的請求,FTP客戶端發送請求連接FTP服務器此端口,成功建立連接后FTP服務器將通過這個端口進行數據的傳送數據傳輸完畢后數據連接隨即關閉,控制連接保持開啟

注!!!!因為很多防火墻在設置的時候都是不允許接受外部發起的連接的,所以許多位于防火墻后或內網后的FTP客戶端不支持主動模式,因為服務器無法穿過防火墻或者無法連接到NAT后的客戶端。所以上傳文件時需要打開被動模式!!!

1、安裝vsftpd

apt-get install vsftpd

2、配置vsftpd

vi /etc/vsftpd.conf

以下是vsftpd配置詳解

(1)、核心配置

local_enable=YES //允許本地用戶登錄 write_enable=YES //本地用戶的寫權限 local_umask=022 //使用FTP的本地文件權限,默認為077,一般設置為022 pam_service_name=vsftpd //驗證方式 connect_from_port_20=YES //啟用FTP數據端口的數據連接 listen=yes // 以獨立的FTP服務運行 listen_port=23//修改連接端口

(2)、匿名登錄設置

anonymous_enable=NO//是否允許匿名登陸,建議不允許 anon_upload_enable=YES // 如果允許匿名登錄,是否開啟匿名上傳權限 anon_mkdir_write_enable=YES //如果允許匿名登錄,是否允許匿名建立文件夾并在文件夾內上傳文件 anon_other_write_enable=yes // 如果允許匿名登錄,匿名帳號可以有刪除的權限 anon_world_readable_only=no //如果允許匿名登錄,匿名的下載權限,匿名為Other,可設置目錄/文件屬性控制 anon_max_rate=30000 // 如果允許匿名登錄,限制匿名用戶傳輸速率,單位bite

(3)、限制登錄

userlist_enable=yes //用userlist來限制用戶訪問userlist_deny=no//名單中的人不允許訪問userlist_file=/etc/vsftpd/userlist_deny.chroot //限制名單文件放置的路徑

(4)、限制目錄

chroot_local_user=yes //限制所有用戶都在家目錄 chroot_list_enable=YES //調用限制在家目錄的用戶名單 chroot_list_file=/etc/vsftpd/chroot_list //限制在家目錄的用戶名單所在路徑

(5)、日志設置

xferlog_file=/var/log/vsftpd.log //日志文件路徑設置 xferlog_std_format=YES // 使用標準的日志格式

(6)、安全設置

idle_session_timeout=600 //用戶空閑超時,單位秒data_connection_timeout=120 //數據連接空閑超時,單位秒accept_timeout=60 //將客戶端空閑1分鐘后斷開local_max_rate=10000 //本地用戶傳輸速率,單位bitemax_clients=100 //FTP的最大連接數max_per_ip= 3 //每IP的最大連接數

(7)、被動模式設置

pasv_enable=yes //是否開戶被動模式 pasv_min_port=3000 // 被動模式最小端口 pasv_max_port=5000 //被動模式最大端口

事實上配置一部就可以上傳文件write_enable=YES放開即可

干因為這個被動模式搞了一天,老是傳不上去圖片,傳上去也只有0kb,還找不到原因。哎....

3、重啟啟動服務

service vsftpd restart

4、登錄

Java實現FTP文件上傳

二、java上傳文件到FTP

那就貼出來寫的比較簡單的文件上傳

/** * Description: 向FTP服務器上傳文件 * @param host FTP服務器hostname * @param port FTP服務器端口 * @param username FTP登錄賬號 * @param password FTP登錄密碼 * @param basePath FTP服務器基礎目錄 * @param filePath FTP服務器文件存放路徑。例如分日期存放:/2018/01/01。文件的路徑為basePath+filePath * @param filename 上傳到FTP服務器上的文件名 * @param input 輸入流 * @return 成功返回true,否則返回false */ public static boolean uploadFile(String host, int port, String username, String password, String basePath, String filePath, String filename, InputStream input) {boolean result = false;FTPClient ftp = new FTPClient();try { int reply; // 連接FTP服務器// 如果采用默認端口,可以使用ftp.connect(host)的方式直接連接FTP服務器 ftp.connect(host, port); // 登錄 ftp.login(username, password); reply = ftp.getReplyCode(); //獲取狀態碼 if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();//結束連接return result; //根據狀態碼判斷是否登錄成功 } //將客戶端設置為被動模式 ftp.enterLocalPassiveMode(); //切換到上傳目錄 if (!ftp.changeWorkingDirectory(basePath+filePath)) {//如果目錄不存在創建目錄String[] dirs = filePath.split('/');String tempPath = basePath;for (String dir : dirs) { if (null == dir || ''.equals(dir)) continue; tempPath += '/' + dir; if (!ftp.changeWorkingDirectory(tempPath)) {if (!ftp.makeDirectory(tempPath)) { return result;} else { ftp.changeWorkingDirectory(tempPath);} }} } //設置上傳文件的類型為二進制類型 ftp.setFileType(FTP.BINARY_FILE_TYPE); //上傳文件 成功true 失敗 false if (!ftp.storeFile(filename, input)) {return result; } input.close(); ftp.logout(); result = true;} catch (IOException e) { e.printStackTrace();} finally { if (ftp.isConnected()) {try { ftp.disconnect();} catch (IOException ioe) {} }}return result; } /** * Description: 從FTP服務器下載文件 * @param host FTP服務器hostname * @param port FTP服務器端口 * @param username FTP登錄賬號 * @param password FTP登錄密碼 * @param remotePath FTP服務器上的相對路徑 * @param fileName 要下載的文件名 * @param localPath 下載后保存到本地的路徑 * @return */ public static boolean downloadFile(String host, int port, String username, String password, String remotePath, String fileName, String localPath) {boolean result = false;//創建對象FTPClient ftp = new FTPClient();try { int reply; //建立鏈接 // 如果采用默認端口,可以使用ftp.connect(host)的方式直接連接FTP服務器 ftp.connect(host, port); // 登錄 ftp.login(username, password); reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();return result; } //將客戶端設置為被動模式 ftp.enterLocalPassiveMode(); ftp.changeWorkingDirectory(remotePath);// 轉移到FTP服務器目錄 FTPFile[] fs = ftp.listFiles(); for (FTPFile ff : fs) {if (ff.getName().equals(fileName)) { File localFile = new File(localPath + '/' + ff.getName()); OutputStream is = new FileOutputStream(localFile); ftp.retrieveFile(ff.getName(), is); is.close();} } ftp.logout(); result = true;} catch (IOException e) { e.printStackTrace();} finally { if (ftp.isConnected()) {try { ftp.disconnect();} catch (IOException ioe) {} }}return result; }

測試類

InputStream inputStream = new FileInputStream(new File('D:/mine/x.jpg'));//uuid生成唯一名字 號稱同一次元生成的uuid絕對不會重復String uuid = UUID.randomUUID().toString().replaceAll('-', '');FTPTools.uploadFile('192.168.1.242',21,'q','q','/home/q/','/',uuid+'獲取文件后綴名',inputStream);

Apache的原生ftp。。。。如果你發現連接到ftp但是上傳文件沒有成功,十有八九 Vsftpd 配置的有問題

以上就是Java實現FTP文件上傳的詳細內容,更多關于Java FTP文件上傳的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 字典-新华字典-在线字典查字-字典趣| 宜兴紫砂壶知识分享 - 宜兴壶人 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 传爱自考网_传爱自学考试网 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 密集柜_档案密集柜_智能密集架_密集柜厂家_密集架价格-智英伟业 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 过跨车_过跨电瓶车_过跨转运车_横移电动平车_厂区转运车_无轨转运车 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 北京成考网-北京成人高考网 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 杭州可当科技有限公司—流量卡_随身WiFi_AI摄像头一站式解决方案 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 维泰克Veertek-锂电池微短路检测_锂电池腐蚀检测_锂电池漏液检测 | 电力测功机,电涡流测功机,磁粉制动器,南通远辰曳引机测试台 | 美甲贴片-指甲贴片-穿戴美甲-假指甲厂家--薇丝黛拉 | 盛源真空泵|空压机-浙江盛源空压机制造有限公司-【盛源官网】 | 半容积式换热器_北京浮动盘管换热器厂家|北京亿丰上达 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 双段式高压鼓风机-雕刻机用真空泵-绍兴天晨机械有限公司 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 直齿驱动-新型回转驱动和回转支承解决方案提供商-不二传动 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 查分易-成绩发送平台官网| 上海宿田自动化设备有限公司-双面/平面/单面贴标机 | 机床主轴维修|刀塔维修|C轴维修-常州翔高精密机械有限公司 | 北京遮阳网-防尘盖土网-盖土草坪-迷彩网-防尘网生产厂家-京兴科技 | 优考试_免费在线考试系统_培训考试系统_题库系统_组卷答题系统_匡优考试 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 哲力实业_专注汽车涂料汽车漆研发生产_汽车漆|修补油漆品牌厂家 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 |