解決FTPClient上傳文件為空,顯示0字節

JAVA使用FTPClient上傳文件時總是為空,而使用FileZilla客戶端時卻不會。

后來查了下資料,FTP服務器有被動模式和主動模式。(具體查另外資料)

在JAVA中將FTPClient設置為被動模式即可解決問題。

?

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;import java.io.File;
import java.io.FileInputStream;/*** Created by Administrator on 2018/4/13.*/
public class FtpUtil {public void testFTPClient() throws Exception {try {//創建一個FTPClient對象FTPClient ftpClient = new FTPClient();//創建ftp鏈接ftpClient.connect("***.***.***.***", 21);//登錄ftp,使用用戶名和密碼ftpClient.login("****", "****");//讀取本地文件FileInputStream inputStream = new FileInputStream(new File("filePath"));//設置為被動模式(如上傳文件夾成功,不能上傳文件,注釋這行,否則報錯refused:connect  )ftpClient.enterLocalPassiveMode();//設置上傳路徑ftpClient.changeWorkingDirectory("FTP服務器文件目錄");//修改上傳文件格式ftpClient.setFileType(FTP.BINARY_FILE_TYPE);System.out.println("1");//上傳文件ftpClient.storeFile("hello1.jpg", inputStream);System.out.println("2");//關閉鏈接ftpClient.logout();} catch (Exception e) {e.printStackTrace();throw e;}}
}

?

補充:

調用FTPClient.enterLocalPassiveMode();這個方法的意思就是每次數據連接之前,ftp client告訴ftp server開通一個端口來傳輸數據。為什么要這樣做呢,因為ftp server可能每次開啟不同的端口來傳輸數據,但是在linux上,由于安全限制,可能某些端口沒有開啟,所以就出現阻塞。

到此問題圓滿解決!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386909.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386909.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386909.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件工程——結對編程第二次作業

目錄 1. 題目及要求2. 功能的設計3. GUI(圖形用戶界面)的設計4. 容錯機制的設計4.1 選擇運算符的容錯處理4.2 最大值和題目數輸入的容錯處理4.3 打開文件容錯處理4.4 打印的容錯處理5. 程序的運行效果6. 對領航員的評價7. 總結本次作業所開發的程序已上傳…

RUNOOB python練習題 32 列表的中括號符號小tips

用來練手的python練習題,原題鏈接: python練習實例32 題干: 按相反的順序輸出列表的值 拿到題目首先寫下如下代碼: a [1,2,3,4] for i in range(len(a)):print(a[len(a)-i-1])輸出結果如下: 使用一個簡單的循環就可以完成這個操作。但其實python有利用中括號操…

redis啟動后出現WARNING you have Transparent Huge Pages (THP) support enabled in your kernel問題...

問題描述:啟動redis后出現:WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command echo never > /sys/kernel/mm/trans…

Anaconda安裝第三方包(whl文件)

先說下環境 Anaconda 對應Python3.5的版本 win7,64位系統。 step1:下載whl文件 step2:打開‘Anaconda Command Prompt‘, 如下圖: step3:命令行窗口pip安裝,代碼如下: pip install 路徑whl…

RUNOOB python練習題33 使用join方法實現用逗號分隔列表

用來練手的python練習題,原題鏈接:python練習實例33 題干: 按逗號分隔列表 用逗號分隔列表,我們就想到了join方法。 str.join(sequence)可以用自定的str字符串分隔一個序列,這個序列可以是字符串,列表,元組&#xff…

Use Vim as a Python IDE

Use Vim as a Python IDE I love vim and often use it to write Python code. Here are some useful plugins and tools for building a delightful vim python environment, escpecially for Vim8: 我喜歡vim,經常用它來編寫Python代碼。以下是一些有用的插件和工…

sql2008“備份集中的數據庫備份與現有的xx數據庫不同”解決方法 因為是在另一臺電腦對同名數據庫做的備份,用常規方法還原,提示不是相同數據庫,不讓還原,在網上找到下面的方法解決了: 一、右擊系

sql2008“備份集中的數據庫備份與現有的xx數據庫不同”解決方法 因為是在另一臺電腦對同名數據庫做的備份,用常規方法還原,提示不是相同數據庫,不讓還原,在網上找到下面的方法解決了: 一、右擊系統數據庫master&…

RUNOOB python練習題 35 python print各色字體及背景

用來練手的python練習題,原題鏈接: python練習實例35 題干: 文本顏色設置 python中通過指令可以控制輸出的背景顏色,前景顏色,以及顯示方式。指令的語法如下: ’\033[顯示方式;前景色;背景色m 輸出字符 \033[0m’ 其…

ubuntu18.04 qemu環境搭建【學習筆記】

一、準備工具   1.1 安裝相關工具     sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential 1.2 下載kernel(linux-4.0)與busybox(1.24)源碼 https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/ https://busybox.net/downloads/busy…

for else語句小tips : RUNOOB python練習題36

用來練手的python練習題,原題鏈接: python練習實例36 題干: 求100之內的素數 求某個范圍內的素數,和之前的一個例題其實是一樣的,上次的同類例題鏈接如下: python練習實例12 在實現題目要求時,這次用了for else語句&#xff0c…

Linux 下殺毒軟件 clamav 的安裝和使用

Linux 下殺毒軟件 clamav 的安裝和使用 安裝依賴: 1 2 3 yum install -y pcre* zlib zlib-devel libssl-devel libssl yum install -y openssl yum install -y epel-release openssl version 0.9.8 or higher 1. yum 安裝 clamav 安裝后會自動生成服務文件&#…

列表,元組和range

內容大綱 列表的初識列表的索引切片列表的增刪改查列表的嵌套元組的初識元組的簡單應用range 昨日內容回顧以及作業講解 int str boolstr 索引 s[x:y:z] 常用操作方法 upper lower startswith endswith split 分割:默認按照空格.將字符串分割成列表.可以知道分隔符 strip …

RUNOOB python練習題37 對一個序列的數進行排序

用來練手的Python練習題,原題鏈接: python練習實例37 題干: 對10個數進行排序 在我們使用Numpy模塊時,這個問題是非常簡單的,下面放出降序排列和升序排列的代碼: 升序排列 import numpy as npresult np.zeros(10) for i in range(result…

Linux服務器不停的向外發包,且CPU持續100%

服務器不停的向外發包,且CPU持續100%,遠程登錄后查看發現有一長度為10的隨機字符串進程,kill掉,會重新生成另外長度為10的字符串進程。刪除文件也會重復生成,非常痛苦。查閱crond相關日志,發現實際執行的內…

逆向學習-IDApython(一)

背景 IDAPython 由三個分離的模塊組成,他們分別是 idc,idautils 和 idaapi。 idc(注意大小寫,不是 IDA 中的 IDC)是一個封裝了 IDA 的 IDC 的兼容性模塊,idautils 是 IDA 的高級實用功能模塊,idaapi 允許了我們訪問更加底層的數據。 基本操作 idc.Screen或者here()返回此時的地…

RUNOOB python練習題 39 數組排序

用來練手的python練習題,原題鏈接: python練習實例39 題干: 有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。 這個題目用列表List的sort,append方法非常簡單,如下: 想要升序排列的話,就直接…

IIS 部署asp.net Provisional headers are shown 在VS2005返回值,部署不返回值

IIS 部署asp.net Provisional headers are shown 在VS2005調試返回值,部署到IIS不返回值 首先當時為了跨域的問題,在上面 后來把跨域的內容放在IIS去解決 其次,在每次返回結束的時候,加一句話 Response.End();

背包

學習博客https://www.cnblogs.com/fengziwei/p/7750849.html //為了不誤導初學者,和給老手diss的機會,我就把以前發的刪了, 有興趣的看看那個博客就行了 (明明寫好了,卻被老師關機子...不開心轉載于:https://www.cnblo…

POSIX線程

POSIX線程 標簽(空格分隔): Linux程序設計 什么是線程 線程是一個進程內部的一個控制序列。 當在進程中創建一個新線程時,新的執行線程將擁有自己的棧(因此也有自己的局部變量),但與它的創建者共…

RUNOOB python練習題44

用來練手的python練習題,原題鏈接:python練習實例44 題干: 兩個 3 行 3 列的矩陣,實現其對應位置的數據相加,并返回一個新矩陣 使用基本的List類寫起來就比較麻煩,需要初始化一個3*3的全0矩陣,之后通過遍歷將矩陣對應…