Android FTP客户端使用,快速上传文件
生活随笔
收集整理的這篇文章主要介紹了
Android FTP客户端使用,快速上传文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.ftp依賴
看Android版本使用
compile 'commons-net:commons-net:3.5' implementation 'commons-net:commons-net:3.5'2.廢話不多說,直接先上寫的一個工具類
public class FTPUtils {private static final String TAG = "FTPClientFunctions";private FTPClient ftpClient = null; // FTP客戶端SharedPreferences preferences = XLApplication.getContext().getSharedPreferences("setting", Context.MODE_PRIVATE);private String ip;private String port;private String username;private String password;/*** 連接到FTP服務器** @return 是否連接成功*/public boolean ftpConnect(Context context) {try {username = "anonymous";password = "https://blog.csdn.net";ip = preferences.getString("ftp_ip", XLApplication.getContext().getString(R.string.access_ip));port = preferences.getString("ftp_port", XLApplication.getContext().getString(R.string.ftp_port));ftpClient = new FTPClient();Log.e(TAG, "connecting to the ftp server " + ip + " :" + port);ftpClient.connect(ip, Integer.parseInt(port));// 根據返回的狀態碼,判斷鏈接是否建立成功if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {Log.e(TAG, "login to the ftp server");boolean status = ftpClient.login(username, password);/** 設置文件傳輸模式* 避免一些可能會出現的問題,在這里必須要設定文件的傳輸格式。* 在這里我們使用BINARY_FILE_TYPE來傳輸文本、圖像和壓縮文件。*/ftpClient.setFileType(FTP.BINARY_FILE_TYPE);ftpClient.enterLocalPassiveMode();return status;}} catch (Exception e) {e.printStackTrace();Log.e(TAG, "Error: could not connect to host " + ip);//此處應有提示//ToastUtil.show((PostAlarmActivity)context,"FTP服務器連接失敗");}return false;}/*** 斷開ftp服務器連接** @return 斷開結果*/public boolean ftpDisconnect() {// 判斷空指針if (ftpClient == null) {return true;}// 斷開ftp服務器連接try {ftpClient.logout();ftpClient.disconnect();return true;} catch (Exception e) {Log.d(TAG, "Error occurred while disconnecting from ftp server.");}return false;}/*** ftp 文件上傳** @param srcFilePath 源文件目錄* @param desFileName 文件名稱* @return 文件上傳結果*/public boolean ftpUpload(String srcFilePath, String desFileName) {boolean status = false;try {FileInputStream srcFileStream = new FileInputStream(srcFilePath);status = ftpClient.storeFile(desFileName, srcFileStream);srcFileStream.close();return status;} catch (Exception e) {e.printStackTrace();Log.d(TAG, "upload failed: " + e.getLocalizedMessage());}return status;} }經過自己的多次調試終于調通了,那么我在這里主要給大家說幾個坑吧,可能大家在調試也會出現的情況
1.IP和端口就不說了,根據自己的工程進行修改就行了,那么重點就要說下這個用戶名和密碼的問題了,剛開是和FTP搭建的人員調試的時候,說的是沒有用戶名和密碼,所以開始我就沒有傳這兩個字段,但是老是調試不通,通過查資料才確定ftp是有默認用戶名的anonymous,所以在沒有用戶名和密碼的時候請用默認用戶名,然后就是密碼也必須隨便填一個,不能傳空字符,不然可能還是不會通。
3.調用代碼
new Thread(new Runnable() {@Overridepublic void run() {// TODO 可以首先去判斷一下網絡FTPUtils ftpClient = new FTPUtils();boolean connectResult = ftpClient.ftpConnect(PostAlarmActivity.this);if (connectResult) {boolean uploadResult = ftpClient.ftpUpload(url, VIDEO_UPLOAD_FILE + name);if (uploadResult) {Log.w(TAG, "上傳成功");boolean disConnectResult = ftpClient.ftpDisconnect();if (disConnectResult) {Log.e(TAG, "關閉ftp連接成功");runOnUiThread(new Runnable() {@Overridepublic void run() {submit(url, name, 1);}});} else {Log.e(TAG, "關閉ftp連接失敗");}} else {Log.w(TAG, "上傳失敗");runOnUiThread(new Runnable() {@Overridepublic void run() {ToastUtil.show(PostAlarmActivity.this, "視頻上傳失敗");}});}} else {Log.w(TAG, "連接ftp服務器失敗");}}}).start(); public static final String VIDEO_UPLOAD_FILE = "./";這里的url就是文件源文件路勁,然后這個調用這里也有一個坑,就是這個文件名稱是指你要上傳的位置,這里前面必須指定上傳的文件目錄加上你要保存的文件名,"./"表示根目錄,name是文件名,如果要上傳指定目錄,只要確保FTP服務器有就OK了。
總結
以上是生活随笔為你收集整理的Android FTP客户端使用,快速上传文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12口三层网管交换机的冰火两重天 (EM
- 下一篇: android sina oauth2.