如何使用科尔多瓦文件传输下载 base 64 图像
Posted
技术标签:
【中文标题】如何使用科尔多瓦文件传输下载 base 64 图像【英文标题】:How to download base 64 image using cordova filetransfer 【发布时间】:2016-02-20 05:25:26 【问题描述】:我使用了cordova文件传输协议,并使用了下载功能来下载base-64图像。当我将远程服务器路径设置为“https://upload.wikimedia.org/wikipedia/commons/4/4a/Logo_2013_Google.png”时,它会下载,但是当我将 base-64 图像 pah 放在文件路径上时,它不会下载。 我不知道 base-64 转换。请帮忙。
----我的代码在下面----
function download()
var imageData = image.src;
imageData = imageData.replace('data:image/png;base64,', '');
var d = new Date();
var imageName = "sample" + d.getTime() + ".png";
//var filepath = encodeURI("https://upload.wikimedia.org/wikipedia/commons/4/4a/Logo_2013_Google.png");
var filepath = encodeURI(imageData);
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem)
fileSystem.root.getFile(imageName, create: true, exclusive: true , function (fileEntry)
// get the full path to the newly created file on the device
var localPath = fileEntry.fullPath;
// massage the path for android devices (not tested)
if (device.platform === "Android" && localPath.indexOf("file://") === 0)
localPath = localPath.substring(7);
// download the remote file and save it
var remoteFile = filepath;
var fileTransfer = new FileTransfer();
fileTransfer.download(remoteFile, localPath, function (newFileEntry)
// successful download, continue to the next image
console.log('successful download');
,
function (error) // error callback for #download
console.log('Error with #download method.', error);
);
);
)
)
提前致谢。
【问题讨论】:
【参考方案1】:我找到了自己问题的解决方案。
首先,我已将 base64 图像转换为文件流,并使用 web 服务在服务器上创建图像并在服务器上上传图像,并获取该服务器路径并使用 cordova 文件传输下载。
我的代码在下面
=> 将base64图像转换为图像的Web服务代码
string strImg = imageData.imageData;
string fullName = "d:\\uploadimages";
FileStream fs = new FileStream(fullName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
byte[] data = Convert.FromBase64String(strImg);
bw.Write(data);
bw.Close();
=> 在手机上下载图片
function download()
var filepath = encodeURI("http://www.telerik.com/sfimages/default-source/logos/app_builder.png"),
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem)
fileSystem.root.getFile("sample.jpg", create: true, exclusive: false , function (fileEntry)
// get the full path to the newly created file on the device
var localPath = fileEntry.fullPath;
// massage the path for android devices (not tested)
if (device.platform === "Android" && localPath.indexOf("file://") === 0)
localPath = localPath.substring(7);
// download the remote file and save it
var remoteFile = filepath;
//loadingOverlay.displayLoading("Image will be save on your device.");
var fileTransfer = new FileTransfer();
fileTransfer.download(remoteFile, localPath, function (newFileEntry)
// successful download, continue to the next image
var dwnldImagePath = newFileEntry.fullPath;
console.log('successful download');
,
function (error) // error callback for #download
console.log('Error with #download method.', error);
);
);
function(error) // error callback for #getFile
console.log('Error with #getFile method.', error);
);
)
【讨论】:
以上是关于如何使用科尔多瓦文件传输下载 base 64 图像的主要内容,如果未能解决你的问题,请参考以下文章