实用程序base64Encode与base64Decode方法

时间:2015-12-27 22:00:53

标签: google-apps-script base64 decode utilities

为什么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);
}

此谷歌应用脚​​本从现有的谷歌驱动器源文件中检索字节,并将这些字节转换为base64编码的字符串(base64EncodedBytes)。然后它将字符串转换回普通字节数组,并在同一文件夹上创建一个全新的文件。

现在,如果我们查看Google云端硬盘的最终结果,我们可以看到复制的文件(带有后缀&#34; .copy.png&#34;的文件)不具有相同的大小并且已损坏。

此编码/解码API使用有什么问题?

1 个答案:

答案 0 :(得分:2)

在没有Charset的情况下对文件进行编码。在编码字符串时,charset是有意义的,但在文件的情况下(如本例所示),您应该对其进行编码并解码为&#34; general&#34;。
尝试:

Utilities.base64Encode(file.getBlob().getBytes()); 

Utilities.base64Decode(base64EncodedBytes);

看看它是否适合你。