我想在FTP中推送图库的图像,我正在使用FTPClient
类,我正在尝试创建一个活动来获取图像,但我找不到解决方案。 / p>
我用它来创建活动:
public void abrirGaleria(){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
((Activity) context).startActivityForResult(
Intent.createChooser(intent, "Seleccione una imagen"),
SELECT_FILE);
}
我正在尝试使用它来获得结果。但是我无法调用super.onActivityResult
,因为该类来自AsyncTask
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
Uri selectedImageUri = null;
Uri selectedImage;
String filePath = null;
switch (requestCode) {
case SELECT_FILE:
if (resultCode == Activity.RESULT_OK) {
selectedImage = imageReturnedIntent.getData();
String selectedPath=selectedImage.getPath();
if (requestCode == SELECT_FILE) {
if (selectedPath != null) {
rutaCompleta = new File(selectedPath);
}
}
}
break;
}
}
我该怎么办?
全班同学:
public class FTPSubir extends AsyncTask<Void , Integer, Long> {
private static final int SELECT_FILE = 1;
private String ip; //Almacena la dirección del servidor
private String usuario; //Almacena el nombre de usuario
private String contrasena; //Almacena la contraseña del usuario
FTPClient ftpClient; //Crea la conexión con el servidor
BufferedInputStream bufferIn; //Crea una buffer de lectura
BufferedOutputStream bufferOut; //Crea una buffer de escritura
File rutaCompleta; //Almacena la ruta completa del archivo
Context context; //Almacena el contexto de la aplicacion
String nombreArchivo;
/**
* Crea una instancia de FTP sin credenciales
*/
public FTPSubir(String ip, Context context) {
//Inicialización de campos
this.ip = ip;
usuario = USUARIO;
contrasena = PASS;
ftpClient = null;
bufferIn = null;
bufferOut = null;
rutaCompleta = null;
this.context = context;
}
/**
* Obtiene el nombre de usuario
* @return El nombre de usuario
*/
public String getUsuario() {
return usuario;
}
/**
* Establece el nombre de usuario
* @param usuario El nombre de usuario
*/
public void setUsuario(String usuario) {
this.usuario = usuario;
}
/**
* Obtiene la contraseña de usuario
* @return La contraseña de usuario
*/
public String getContrasena() {
return contrasena;
}
/**
* Establece la contraseña de usuario
* @param contrasena La contraseña de usuario
*/
public void setContrasena(String contrasena) {
this.contrasena = contrasena;
}
/**
* Realiza el login en el servidor
* @return Verdad en caso de haber realizado login correctamente
* @throws SocketException
* @throws IOException
*/
public boolean login () throws IOException {
//Establece conexión con el servidor
System.out.println("Conectando . . .");
try{
ftpClient = new FTPClient();
ftpClient.connect(ip);
}
catch (Exception e){
e.printStackTrace();
//Informa al usuario
System.out.println("Imposible conectar . . .");
return false; //En caso de que no sea posible la conexion
}
//Hace login en el servidor
ftpClient.enterLocalPassiveMode();
if (ftpClient.login(usuario, contrasena)){
//Informa al usuario
System.out.println("Login correcto . . .");
return true; //En caso de login correcto
}
else{
//Informa al usuario
System.out.println("Login incorrecto . . .");
return false; //En caso de login incorrecto
}
}
/**
* Sube un archivo al servidor FTP si previamente se ha hecho login correctamente
* @return Verdad en caso de que se haya subido con éxito
* @throws IOException
*/
public boolean SubirArchivo () throws IOException{
ftpClient.enterLocalActiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//Cambia la carpeta Ftp
if (ftpClient.changeWorkingDirectory("ftp")){
//Informa al usuario
System.out.println("Carpeta ftp cambiada . . .");
//Crea un buffer hacia el servidor de subida
bufferIn = new BufferedInputStream(new FileInputStream(rutaCompleta));
if (ftpClient.storeFile(rutaCompleta.getName(), bufferIn)){
//Informa al usuario
System.out.println("Archivo subido . . .");
bufferIn.close(); //Cierra el bufer
return true; //Se ha subido con éxito
}
else{
//Informa al usuario
System.out.println("Imposible subir archivo . . .");
bufferIn.close(); //Cierra el bufer
return false; //No se ha subido
}
}
else{
//Informa al usuario
System.out.println("Carpeta ftp imposible cambiar . . .");
return false; //Imposible cambiar de directo en servidor ftp
}
}
public void abrirGaleria(){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
((Activity) context).startActivityForResult(
Intent.createChooser(intent, "Seleccione una imagen"),
SELECT_FILE);
}
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
Uri selectedImageUri = null;
Uri selectedImage;
String filePath = null;
switch (requestCode) {
case SELECT_FILE:
if (resultCode == Activity.RESULT_OK) {
selectedImage = imageReturnedIntent.getData();
String selectedPath=selectedImage.getPath();
if (requestCode == SELECT_FILE) {
if (selectedPath != null) {
rutaCompleta = new File(selectedPath);
}
}
}
break;
}
}
@Override
protected Long doInBackground(Void... voids) {
try {
login();
abrirGaleria();
SubirArchivo();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Imposible conectar . . .");
}
return null;
}
@Override
protected void onPostExecute(Long result) {
//Termina proceso
Log.i("TAG" , "Termina proceso de lectura de archivos.");
}
}