如何在sencha touch中将图像(使用图像路径)转换为base64字符串?

时间:2012-03-30 08:28:23

标签: sencha-touch base64 extjs

iam new sencha touch。

我正在做一个项目,在那个项目中,我需要将图像转换为base64字符串,iam上传图像,然后iam获得图像的全部路径,但是我无法将图像转换为base64字符串。

请帮助我解决这个问题。 确保iam在sencha中询问

2 个答案:

答案 0 :(得分:0)

您如何访问这些文件?图像来自哪里?如果他们来自相机或照片库,那么Phonegap是获取它们的最佳方式。在这种情况下,PG解决了Base64编码。如果你试图用纯粹的js解决它,那么你需要做更多的工作。 Sencha不提供base64编码的功能。因此,如果您为项目添加一些功能,最好的选择。网上有很多资源如何在javascript中进行base64编码。例如。请参阅此处的讨论Base64 encoding and decoding in client-side Javascript

答案 1 :(得分:0)

以下代码段可帮助您上传图片并获取base64数据 在您的视图中,您应该具有sencha touch的以下文件字段组件

Ext.define('MyApp.view.Main', {
extend: 'Ext.form.Panel',
xtype: 'main',
requires: [
    'Ext.TitleBar',
    'Ext.Video'
],
config: {
    tabBarPosition: 'bottom',

    items: [
        {
            xtype: 'filefield',
            id: 'idfilefieldSample',
            name: 'filefieldSample',
            accept: 'image'
        },
    ]
}

});

你的控制器看起来像这样:

Ext.define('MyApp.controller.MainController', {
    extend: 'Ext.app.Controller',
    config:{
        control:{
            'filefield[name=filefieldSample]': {
                change: 'onChangefilefield',
            },
        }
    },
    onChangefilefield: function(filefield, newData, oldData, eOpts)
    {
        var filesSelected = Ext.getCmp('idfilefieldSample').getComponent().input.dom.files;
        if (filesSelected.length > 0)
        {
            var fileToLoad = filesSelected[0];
            var fileReader = new FileReader();
            fileReader.onload = function(fileLoadedEvent)
            {
                var srcData = fileLoadedEvent.target.result;
                console.log(srcData);
            }
            fileReader.readAsDataURL(fileToLoad);
        }
    },
});