Base64插件无法正常工作

时间:2018-02-06 08:10:28

标签: cordova ionic-framework ionic2 cordova-plugins ionic3

该插件工作正常,直到最近我开始面临问题,代码不执行也不会抛出错误。我想从相机捕获图像并将base64字符串发送到服务器,这很容易,因为我可以直接获取捕获图像的base64,但之后我使用了本地crop返回裁剪图像的URI。所以现在我必须得到此图片的base64,但Base64插件已不再有效了。任何变通方法或帮助都非常感谢。 我使用的代码:

this.base64.encodeFile(filePath).then((base64File: string) => {
    console.log(base64File);    // Won't execute
}, (err) => {
    console.log(err);  // Won't execute
});

3 个答案:

答案 0 :(得分:4)

我在同一个bug上花了几个小时。这个插件刚刚停止工作(它还是测试版)。我在我的代码中做了一些更改,并用File Plugin替换了Base64插件。

  1. 将文件插件添加到app.module.ts imports。
  2. 在组件/服务构造函数中导入和注入依赖项。
  3. 然后如果你有文件路径:

    // split file path to directory and file name
    let fileName = filePath.split('/').pop();
    let path = filePath.substring(0, filePath.lastIndexOf("/") + 1);
    
    this.file.readAsDataURL(path, fileName)
    .then(base64File => {
        console.log("here is encoded image ", base64File)
    })
    .catch(() => {
        console.log('Error reading file');
    })
    

答案 1 :(得分:0)

Base64 插件需要安装 Device

参见 repo phonegap-base64 line 11

if (device.platform == "Android")

答案 2 :(得分:0)

在 Android 中,在 build.gradle(app) 文件中,将目标 SDK 更改为 targetSdkVersion 30。

然后转到您的 AndroidManifest.xml 并在应用程序标记中添加这一行 android:requestLegacyExternalStorage="true" ,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    >

    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:requestLegacyExternalStorage="true">

尝试应用此解决方案对我有用