首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android到Base64的转换不起作用

Android到Base64的转换不起作用
EN

Stack Overflow用户
提问于 2021-05-22 13:12:32
回答 1查看 530关注 0票数 0

我正在尝试上传一个文件PDF文件到服务器。为此,我需要将PDF文件转换为BASE64字符串。

转换正在进行,但当我尝试将Base64转换为PDF时,它并没有给出适当的值。我的错误就像下面的图片一样。

文件选择代码

代码语言:javascript
复制
@SuppressLint("NewApi")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult( requestCode, resultCode, data );

    if (requestCode == PDF_REQ_CODE && resultCode == RESULT_OK && data != null && data.getData() != null) {
        uri = data.getData();
        //String path=data.getData().getPath();
        btnPdfFileChooser.setText( "PDF is Selected" );
        //Toast.makeText(FileUploadActivity.this, uri.toString(), Toast.LENGTH_SHORT).show();
        //InputStream inputStream = c.getContentResolver().openInputStream(path)
        PdfUploadFunction();
    }
}

上传功能(需要编写API调用来更新服务器中的详细信息。)

代码语言:javascript
复制
private void PdfUploadFunction() {
    // Getting pdf name from EditText.
    PdfNameHolder = strPdfFileName.toString().trim();
    // Getting file path using Filepath class.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        PdfPathHolder = FilePath.getPath( this, uri );
    }
    // If file path object is null then showing toast message to move file into internal storage.
    if (PdfPathHolder == null) {
        Toast.makeText( this, "Please move your PDF file to internal storage & try again.", Toast.LENGTH_LONG ).show();
    }
    // If file path is not null then PDF uploading file process will starts.
    else {
        String base64 = getBase64FromPath( PdfPathHolder );
        //String base64 = encodeFileToBase64Binary( PdfPathHolder );
        Toast.makeText( this, "base64-" + base64, Toast.LENGTH_LONG ).show();
        Log.e( "base64-", base64.toString() );
    }
}

BASE64转换代码.

代码语言:javascript
复制
 public static String getBase64FromPath(String path) {
      
        byte[] byteArray = null;
        try {
            File file = new File( path );
            InputStream inputStream = new FileInputStream(file);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024 * 11];
            int bytesRead = 0;

            while ((bytesRead = inputStream.read(b)) != -1) {
                bos.write(b, 0, bytesRead);
            }

            byteArray = bos.toByteArray();

            Log.e("Byte array", ">" + byteArray);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return Base64.encodeToString(byteArray, Base64.NO_WRAP);
    }

我经常在谷歌上搜索。但我无法找到正确的解决办法。希望有人能帮忙。

EN

回答 1

Stack Overflow用户

发布于 2022-09-06 06:17:47

代码语言:javascript
复制
public static String getBase64Pdf(String pdfFilePath){
try{
    InputStream inputStream = new FileInputStream(pdfFilePath);
    byte[] byteArray = IOUtils.toByteArray(inputStream);
    String encodedPdfString = Base64.encodeToString(byteArray, Base64.DEFAULT);
    PrintLog.showTag(TAG,"pdf converted to string : " + encodedPdfString);
    return encodedPdfString;
}catch (IOException e){
}
return "";

不确定您的场景,但是在我的例子中,这是可行的,也许您的端

有一个路径问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67649891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档