我正在使用 PHP 开发一个 RESTful API,它允许发布图像等数据。在基于 PHP 的客户端中,获取发布的 base64 编码字符串是这样获得的:
$string = base64_encode( file_get_contents('image.jpg') );
然后通过简单的反转在 API 端对其进行解码:
file_put_contents('new-image.jpg', base64_decode($string));
这适用于基于 PHP 的客户端,但现在我正在尝试使用 Adobe Air 对其进行测试。下面的结果是一个相当大的 base64 编码字符串,但是一旦它到达 API 就不能正确解码:
var fs = new air.FileStream();
var file = air.File.desktopDirectory.resolvePath(files[0].nativePath);
var photoData = '';
fs.open(file, air.FileMode.READ);
for( var i = 0; i < fs.bytesAvailable; i++ ) {
photoData += fs.readByte();
}
fs.close();
photoData = btoa(photoData); // base64-encoded string
在这一点上,我想知道是否btoa()
是一种不同于 PHP 使用的编码方法,或者我只是将字节不正确地组装成一个字符串。
知道我哪里出错了吗?我已经看这个太久了:)