SFTP普通任务上传

要使用sftp文件上传功能,需要导入sftp组件

一、创建任务

long taskId = Aria.upload(this)
        .loadFtp(filePath) // 文件路径
        .setUploadUrl(上传url) // 设置文件保存路径
        .sftpOption(new SFtpOption()) // 将任务类型切换到Sftp
        .create();

通过#create(),方法,可以创建一个新的上传任务。

1.1、SFtpOption设置

如果你需要设置ftp相关参数,见SFtpOption设置

二、任务控制

2.1、获取任务id

停止、恢复、删除任务需要使用任务id。获取任务id的方法有两种,详情见获取任务列表

2.2、停止任务

Aria.upload(this).loadFtp(taskId).stop();

2.3、删除任务

Aria.upload(this).loadFtp(taskId).cancel();

在上传完成的情况下,#cancel()方法只会删除记录,而不会删除已上传完成的文件,如果你希望在上传完成的情况下删除已上传完成的文件,可以是使用#cancel()的重载方法#cancel(true)

2.4、恢复任务

Aria.upload(this).loadFtp(taskId).resume();

Aria.upload(this).loadFtp(taskId).resume(true); // 立即进入执行队列

2.5、其他API

除了这些基本的任务控制外,你还可以查看任务控制文档。

2.6 、文件拦截器

如果远端已有同名文件,可使用拦截器控制覆盖文件或修改该文件上传到服务器端端文件名。
⚠️为了防止内存泄漏,请务必使用文件类或静态的成员类。 创建拦截器

private static class UploadInterceptor implements IFtpUploadInterceptor{

    @Override
  FtpInterceptHandler onIntercept(UploadEntity entity, List<String> fileList){

      return new FtpInterceptHandler();
  }
}

设置拦截器

FtpOption option = new FtpOption();
option.setUploadInterceptor(new UploadInterceptor());
long taskId = Aria.upload(this)
        .loadFtp(filePath) // 文件路径
        .setUploadUrl(上传url) // 设置文件保存路径
        .option(option)
        .create();

2.7 、强制上传

正常来说,如果有其它任务上传了指定路径的文件,你希望在新的任务中继续上传该文件,可使用以下api强制上传。

isIgnoreFilePathOccupy()

三、任务状态监听

在Aria中,任务状态是通过java注解获取的。要获取任务状态,你只需要以下几个步骤便可。

1、在#onCreate()或其它位置注册Aria

Aria.upload(this).register();

2、使用注解获取任务状态,如执行中、完成

/*
 * 任务执行中
 */
@Upload.onTaskRunning
protected void running(UploadTask task) {
    if (task.getKey().equals(mUrl)) { // 判断任务是否是指定任务
      ALog.d(TAG, "isRunning");
      progress.setProgress(task.getPercent()); // 获取百分比进度
      speed.setSpeed(task.getConvertSpeed()); // 获取速度
    }
}

/*
 * 任务完成
 */
@Upload.onTaskComplete
protected void taskComplete(UploadTask task) {
    if (task.getKey().equals(mUrl)) {
      progress.setProgress(100);
    }
}

⚠️注意:如果你在非Activity或Fragment中注册了Aria,那么你需要在销毁对象时调用Aria.upload(this).unRegister();取消注册,否则会出现内存泄漏的情况。

👉其它注解👈

四、注意事项

  • FTP上传需要FTP 服务器给用户打开write的权限
  • 如果需要支持断点上传,需要FTP服务器给用户打开append权限
  • FTP上传地址必须加上端口号
  • aria支持读取url中的账号和密码,但是如果url中已经带有账号和密码,则不能使用login()进行登录,否则url中的账号密码将被覆盖
Copyright © 2018 laoyuyu. | 蜀ICP备17031160号.            更新时间: 2020-01-17

results matching ""

    No results matching ""