我在浏览器中使用Gmail API,并希望允许用户下载电子邮件附件。我看到https://developers.google.com/gmail/api/v1/reference/users/messages/attachments/get但它返回JSON和base64数据。我不认为我可以在内存中获取该数据然后触发“下载”以在本地保存文件。即使我可以认为它不会有效 - 它可能会将文件下载到内存中,而不是将其传输到文件中。我想我需要一个直接链接到一个文件,该文件返回正确的文件名和原始二进制数据(不是base64)。有没有办法做到这一点?现在,我看到的唯一方法是代理请求。
答案 0 :(得分:0)
您可以从base64获取数据并将其保存到本地文件中。
如果您使用Java获取附件,则可以使用FileOutputStream
类(or f.write() in Python)
将字节写入文件,并使用路径将其保存在本地。
您可以尝试使用Google Developer页面中的以下示例代码:
public static void getAttachments(Gmail service, String userId, String messageId)
throws IOException {
Message message = service.users().messages().get(userId, messageId).execute();
List<MessagePart> parts = message.getPayload().getParts();
for (MessagePart part : parts) {
if (part.getFilename() != null && part.getFilename().length() > 0) {
String filename = part.getFilename();
String attId = part.getBody().getAttachmentId();
MessagePartBody attachPart = service.users().messages().attachment().
get(userId, messageId, attId).execute();
byte[] fileByteArray = Base64.decodeBase64(attachPart.getData());
FileOutputStream fileOutFile =
new FileOutputStream("directory_to_store_attachments" + filename);
fileOutFile.write(fileByteArray);
fileOutFile.close();
}
}
}