【问题标题】:How to decode base64 string and convert it into PDF/JPG and save it in storage如何解码 base64 字符串并将其转换为 PDF/JPG 并将其保存在存储中
【发布时间】:2016-04-12 16:18:49
【问题描述】:

我想解码 base64 字符串并将其转换为文件(如 PDF/JPG)并将其保存到设备,例如在 (/storage/emulated/0/Download/file.pdf) 中。/emulated/0/Download/file.pdf p>

为了对文件进行编码,我使用以下代码:

File originalFile = new File("/mnt/sdcard/download/file.pdf");
    String encodedBase64 = null;
    try {
        FileInputStream fileInputStreamReader = new FileInputStream(originalFile);
        byte[] bytes = new byte[(int) originalFile.length()];
        fileInputStreamReader.read(bytes);
        encodedBase64=Base64.encodeToString(bytes,Base64.NO_WRAP);
        messaggio=encodedBase64.toString();
        //encodedBase64 = new String(Base64.encode(bytes));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

现在,我想解码这个 base64 字符串并将其转换为文件并保存在设备上。

【问题讨论】:

    标签: java android base64 fileoutputstream


    【解决方案1】:

    你可以试试这个:

    FileOutputStream fos = new FileOutputStream(filepath);
    fos.write(Base64.decode(base64String, Base64.NO_WRAP));
    fos.close();
    

    地点:

    • filepath: 新文件的路径
    • base64String:你要转换的base64字符串

    【讨论】:

      【解决方案2】:

      在 Manifest 中授予 READ_STORAGE 和 Write_STORAGE 权限,不要忘记运行时权限。

       public static void storetoPdfandOpen(Context context, String base) {
      
      
      
          String root = Environment.getExternalStorageDirectory().toString();
      
          Log.d("ResponseEnv",root);
      
          File myDir = new File(root + "/WorkBox");
          if (!myDir.exists()) {
              myDir.mkdirs();
          }
      
          Random generator = new Random();
          int n = 10000;
          n = generator.nextInt(n);
      
          String fname = "Attachments-" + n + ".pdf";
          File file = new File(myDir, fname);
          if (file.exists())
              file.delete();
          try {
      
              FileOutputStream out = new FileOutputStream(file);
              byte[] pdfAsBytes = Base64.decode(base, 0);
              out.write(pdfAsBytes);
              out.flush();
              out.close();
      
      
          } catch (Exception e) {
              e.printStackTrace();
          }
      
          File dir = new File(Environment.getExternalStorageDirectory(), "WorkBox");
          File imgFile = new File(dir, fname);
          Intent sendIntent = new Intent(Intent.ACTION_VIEW);
      
          Uri uri;
          if (Build.VERSION.SDK_INT < 24) {
              uri = Uri.fromFile(file);
          } else {
              uri = Uri.parse("file://" + imgFile); // My work-around for new SDKs, causes ActivityNotFoundException in API 10.
          }
      
          sendIntent.setDataAndType(uri, "application/pdf");
          sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
          context.startActivity(sendIntent);
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-26
        • 1970-01-01
        • 1970-01-01
        • 2021-11-10
        • 2021-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多