android - 如何将来自服务器的 base64 json 文件保存在移动外部存储中?

标签 android file

我在 json 响应中从服务器获取一个 base64 字符串。它可能包含图像、zip 文件、pdf、mp3 或视频。如果我要解码 base 64 字符串,则在 imageview 中显示图像,但我想要下载文件并在移动图库中打开它,如果是图片,如果是 pdf 文件,它将像那样在 pdf 阅读器中打开....如何实现?

"attach":[{"id":6,"name":"Ticket.pdf","thread_id":17,"size":"356660","type":"application\/pdf","poster":"ATTACHMENT","created_at":"2018-03-13 11:40:32","updated_at":"2018-03-13 11:40:32","file":"base64 encoded string","driver":"local","path":"\/home\/jamboree\/public_html\/sayarnew\/storage\/app\/private\/2018\/3\/13"}]

最佳答案

根据您端点的字段,检查它是否是图像/pdf。既然你说你可以显示它 imageview,你可能有位图。将此位图转换为文件并将其存储在您的内存中(因此图像下载完成)。看下面的代码将位图转换为文件并存储在内存中

private void downLoadImage(Bitmap bitmap) {

String path = Environment.getExternalStorageDirectory().toString();
File directory = new File(path + "/dir_images");    
directory.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "IM_"+ n +".jpg";
File file = new File (directory, fname);
if (file.exists ())
  file.delete (); 
try {
    FileOutputStream out = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
    out.flush();
    out.close();

} catch (Exception e) {
     e.printStackTrace();
}
}

关于android - 如何将来自服务器的 base64 json 文件保存在移动外部存储中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49293341/

相关文章:

Android mkdirs() 在 Android 11 上使用 Environment.getExternalStorageDirectory() 返回 false

file - NSIS 简单地将一个文件从程序文件目录中的另一个文件夹复制到安装目录不起作用

java - 读取java中存储为ascii字符的整数值

android - 按钮出现在 android API 19 中,但不是 API 17

macos - Grep 文件搜索返回 : Is a directory in OSX Mountain Lion

javascript - 将输入标签读入 JavaScript 字符串

python - 无法读取 ascii 字符 26?

android - 加载 webview 时的 NPE

java - 添加项目后 ListView 不会滚动到底部

java - 一起共享图像和文本不适用于 Android 上的 Telegram