gpt4 book ai didi

Android 异步 FTP

转载 作者:行者123 更新时间:2023-11-29 21:11:32 24 4
gpt4 key购买 nike

我正在尝试使用 ASync 任务通过 FTP 发送文件,这是我目前发现的但无法调用它来发送文件:

package com.hdwinc.hdworderentry;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.SocketException;
import java.net.UnknownHostException;

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

import android.os.AsyncTask;
import android.util.Log;

public abstract class HDWFTP_Upload extends AsyncTask{
//void FTP_DATA_UPLOAD(String FULL_PATH_TO_LOCAL_FILE)


protected Long doInBackground(String... FULL_PATH_TO_LOCAL_FILE ) {
// encapsulate FTP inside a A sync task

{
System.out.println("Entered FTP transfer function");

FTPClient ftpClient = new FTPClient();
int reply;
try {
System.out.println("Entered Data Upload loop!");
ftpClient.connect(ServerName,21);
ftpClient.login(Username, Password);
ftpClient.sendCommand("QUOTE SITE NAMEFMT 1");
ftpClient.changeWorkingDirectory("/OPTICON/");
System.out.println("Entered Data Upload loop!");


reply = ftpClient.getReplyCode();


if(FTPReply.isPositiveCompletion(reply)){
System.out.println("Connected Success");
}else {
System.out.println("Connection Failed");
ftpClient.disconnect();
}



if (ftpClient.getReplyString().contains("250")) {
ftpClient.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
BufferedInputStream buffIn = null;
System.out.println("Created an input stream buffer");
System.out.println(FULL_PATH_TO_LOCAL_FILE.toString());

buffIn = new BufferedInputStream(new FileInputStream(FULL_PATH_TO_LOCAL_FILE[0]));
ftpClient.enterLocalPassiveMode();

System.out.println("Entered binary and passive modes");
//Handler progressHandler=null;
//ProgressInputStream progressInput = new ProgressInputStream(buffIn, progressHandler);

//Code to Extract name from the string.
//http://stackoverflow.com/questions/10549504/obtain-name-from-absolute- path-substring-from-last-slash-java-android
String Picture_File_name = new File(FULL_PATH_TO_LOCAL_FILE[0]).getName();


boolean result = ftpClient.storeFile(Picture_File_name, buffIn); //localAsset.getFileName()
//ProgressInputStream progressInput = new ProgressInputStream(buffIn, progressHandler);

if (result){
System.out.println("Success");
}

//boolean result = ftpClient.storeFile("TEST.jpg", progressInput);
System.out.println("File saved");


//buffIn.close();
ftpClient.logout();
ftpClient.disconnect();
}

} catch (SocketException e) {
Log.e("Citizen Cam FTP", e.getStackTrace().toString());
System.out.println("Socket Exception!");
} catch (UnknownHostException e) {
Log.e("Citizen Cam FTP", e.getStackTrace().toString());
} catch (IOException e) {
Log.e("Citizen Cam FTP", e.getStackTrace().toString());
System.out.println("IO Exception!");
}

return null;
}


}


}

如何在另一个 Activity 中调用它?我的订单 Activity 创建了一个文件,我需要将其发送到服务器。

最佳答案

我删除了每个#Squonk 的抽象引用,并查看了#Mike M 提供的两个页面并提出了一个解决方案。

谢谢大家。

public class HDWFTP_Upload extends AsyncTask <String, Void, Long>{



protected Long doInBackground(String... FULL_PATH_TO_LOCAL_FILE ) {

{


FTPClient ftpClient = new FTPClient();
int reply;
try {
System.out.println("Entered Data Upload loop!");
ftpClient.connect(servername,21);
ftpClient.login(user, pass);
ftpClient.sendCommand("QUOTE SITE NAMEFMT 1");
ftpClient.changeWorkingDirectory("/OPTICON/");


reply = ftpClient.getReplyCode();


if(FTPReply.isPositiveCompletion(reply)){
System.out.println("Connected Success");
}else {
System.out.println("Connection Failed");
ftpClient.disconnect();
}



if (ftpClient.getReplyString().contains("250")) {
ftpClient.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
BufferedInputStream buffIn = null;
System.out.println("Created an input stream buffer");
System.out.println(FULL_PATH_TO_LOCAL_FILE.toString());

buffIn = new BufferedInputStream(new FileInputStream(FULL_PATH_TO_LOCAL_FILE[0]));
ftpClient.enterLocalPassiveMode();

System.out.println("Entered binary and passive modes");

String Picture_File_name = new File(FULL_PATH_TO_LOCAL_FILE[0]).getName();


boolean result = ftpClient.storeFile(Picture_File_name, buffIn);

if (result){
System.out.println("Success");
}


System.out.println("File saved");



ftpClient.logout();
ftpClient.disconnect();
}

} catch (SocketException e) {
Log.e("HDW FTP", e.getStackTrace().toString());
System.out.println("Socket Exception!");
} catch (UnknownHostException e) {
Log.e("HDW FTP", e.getStackTrace().toString());
} catch (IOException e) {
Log.e("HDW FTP", e.getStackTrace().toString());
System.out.println("IO Exception!");
}

return null;

}




}

调用方式:

new HDWFTP_Upload().execute(uploadFile);

关于Android 异步 FTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com