我正在研究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使用的编码方法不同的编码方法,或者我是否只是将字节不正确地组合成字符串。
知道我哪里出错了吗?我一直在看这个太久了:))