1

我正在使用 PHP 开发一个 RESTful API,它允许发布图像等数据。在基于 PHP 的客户端中,获取发布的 base64 编码字符串是这样获得的:

$string = base64_encode( file_get_contents('image.jpg') );

然后通过简单的反转在 API 端对其进行解码:

file_put_contents('new-image.jpg', base64_decode($string));

这适用于基于 PHP 的客户端,但现在我正在尝试使用 Adob​​e 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 使用的编码方法,或者我只是将字节不正确地组装成一个字符串。

知道我哪里出错了吗?我已经看这个太久了:)

4

0 回答 0