2014-11-24 4 views
4

Я использую API Gmail в браузере и хочу разрешить пользователю загружать вложения электронной почты. Я вижу https://developers.google.com/gmail/api/v1/reference/users/messages/attachments/get, но он возвращает данные JSON и base64. Я не думаю, что могу получить эти данные в памяти, а затем запустить «загрузку», чтобы сохранить файл локально. Даже если бы я не мог подумать, что это будет эффективно - возможно, он загрузит файл в память и потокочет его в файл. Я думаю, мне нужна прямая ссылка на файл, который возвращает правильное имя файла и необработанные двоичные данные (а не base64). Есть ли способ сделать это? Прямо сейчас я вижу только прокси-запросы.Как загрузить приложение в браузере?

ответ

0

Вы можете получить данные из base64 и сохранить их в файл локально.

Если вы получаете вложение на Java, вы можете использовать класс (or f.write() in Python) для записи байтов в файл и сохранения его локально с помощью пути.

Вы можете попробовать следующий пример кода со страницы разработчика Google:

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(); 
     } 
    } 
    } 
+0

Я говорю о в стороне клиента браузера, поэтому должны быть в состоянии сделать это в JavaScript с ограничениями браузера. – dgobaud

Смежные вопросы