实用程序 base64Encode 与 base64Decode 方法
Utilities base64Encode versus base64Decode method
为什么 base64Decode 无法解码由 base64Encode 编码的内容?
function test_base64encoding_decoding() {
var file = DriveApp.getFileById("<google drive png file id>");
// Encode file bytes as a string
var base64EncodedBytes = Utilities.base64Encode(file.getBlob().getBytes(), Utilities.Charset.UTF_8);
// Decode string
var bytes = Utilities.base64Decode(base64EncodedBytes, Utilities.Charset.UTF_8);
// create new file
var blob = Utilities.newBlob(bytes, file.getMimeType(), file.getName() + ".copy.png");
file.getParents().next().createFile(blob);
}
此 google 应用脚本从现有 google 驱动器源文件中检索字节,并将这些字节转换为 base64 编码字符串 (base64EncodedBytes)。然后它将字符串转换回普通字节数组并在同一文件夹中创建一个全新的文件。
现在,如果我们在 Google 驱动器中查看最终结果,我们可以看到复制的文件(后缀为“.copy.png”的文件)大小不一样并且已损坏.
这个 encode/decode API 用法有什么问题?
不使用字符集对文件进行编码。当您对字符串进行编码时,字符集是有意义的,但是对于文件(如本例),您应该对其进行编码并解码为 "general".
尝试:
Utilities.base64Encode(file.getBlob().getBytes());
和
Utilities.base64Decode(base64EncodedBytes);
看看它是否适合你。
为什么 base64Decode 无法解码由 base64Encode 编码的内容?
function test_base64encoding_decoding() {
var file = DriveApp.getFileById("<google drive png file id>");
// Encode file bytes as a string
var base64EncodedBytes = Utilities.base64Encode(file.getBlob().getBytes(), Utilities.Charset.UTF_8);
// Decode string
var bytes = Utilities.base64Decode(base64EncodedBytes, Utilities.Charset.UTF_8);
// create new file
var blob = Utilities.newBlob(bytes, file.getMimeType(), file.getName() + ".copy.png");
file.getParents().next().createFile(blob);
}
此 google 应用脚本从现有 google 驱动器源文件中检索字节,并将这些字节转换为 base64 编码字符串 (base64EncodedBytes)。然后它将字符串转换回普通字节数组并在同一文件夹中创建一个全新的文件。
现在,如果我们在 Google 驱动器中查看最终结果,我们可以看到复制的文件(后缀为“.copy.png”的文件)大小不一样并且已损坏.
这个 encode/decode API 用法有什么问题?
不使用字符集对文件进行编码。当您对字符串进行编码时,字符集是有意义的,但是对于文件(如本例),您应该对其进行编码并解码为 "general".
尝试:
Utilities.base64Encode(file.getBlob().getBytes());
和
Utilities.base64Decode(base64EncodedBytes);
看看它是否适合你。