文件存储

注意

1、下载文件到sdcard或者从sdcard上传文件到云端需要在 application 标签下增加如下权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2、使用文件存储需导入 [option]文件管理模块sdk 目录下的文件到libs目录下

3、上传下载支持断点续传功能

下载文件

获取下载url

ACFileInfo fileInfo = new ACFileInfo(bucket, name);
//0代表url链接有效时间为长期有效
AC.fileMgr().getDownloadUrl(fileInfo, 0, new PayloadCallback<String>() {
    @Override
    public void success(String url) {
         //成功获取文件url
    }

    @Override
    public void error(ACException e) {
         //没有权限或其他网络错误
    }
});

根据url下载文件

1、下载文件到sdcard

ACUtils.createSDDir("myDir");
File file = null;
try {
     file = ACUtils.createSDFile("myDir/" + name);
} catch (IOException e) {
}
//0代表不校验checksum
fileMgr.downloadFile(file, url, 0, new ProgressCallback() {
    @Override
    public void progress(double progress) {
         //用于显示进度条,百分比,如99.99;如果没有显示进度条的需求则传null
    }
}, new VoidCallback() {
    @Override
    public void success() {
        //下载成功
    }

    @Override
    public void error(ACException e) {
         //支持断点续传,所以此处无网络错误,在恢复网络连接之后会继续下载
    }
});

2、下载文件到内存,比如头像下载

//0代表不校验checksum
fileMgr.downloadFile(url, 0, null, new PayloadCallback<byte[]>() {
    @Override
    public void success(byte[] bytes) {
         //下载成功
    }

    @Override
    public void error(ACException e) {
         //支持断点续传,所以此处无网络错误,在恢复网络连接之后会继续下载
    }
});

上传文件

上传sdcard文件

//bucket可理解为文件存储在云端的目录,name为文件名。(开发者自己维护通过这两个参数保证上传的所有文件在云端不会重名,建议通过UUID的方式命名文件或者以用户/设备唯一标识命名bucket),重目录重名的情况下原文件会被覆盖。另外可通过这两个参数获取到下载的url。
ACFileInfo fileInfo = new ACFileInfo(bucket, name);
//设置上传文件的sdcard路径
fileInfo.setFile(new File(Environment.getExternalStorageDirectory() + "/myDir/" + name));
fileMgr.uploadFile(fileInfo, new ProgressCallback() {
    @Override
    public void progress(double progress) {
        //用于显示进度条,百分比,如99.99;如果没有显示进度条的需求则传null
    }
}, new VoidCallback() {
    @Override
    public void success() {
        //上传成功
    }

    @Override
    public void error(ACException e) {
        //支持断点续传,所以此处无网络错误,在恢复网络连接之后会继续上传
    }
});

上传小文件,比如头像

//bucket可理解为文件存储在云端的目录,name为文件名。(开发者自己维护通过这两个参数保证上传的所有文件在云端不会重名,建议通过UUID的方式命名文件或者以用户/设备唯一标识命名bucket),重目录重名的情况下原文件会被覆盖。另外可通过这两个参数获取到下载的url。
ACFileInfo fileInfo = new ACFileInfo(bucket, name);
//比如头像比特流数组
fileInfo.setData(bytes);
fileMgr.uploadFile(fileInfo, null, new VoidCallback() {
    @Override
    public void success() {
        //上传成功
    }

    @Override
    public void error(ACException e) {
        //支持断点续传,所以此处无网络错误,在恢复网络连接之后会继续上传
    }
});