Я провел дни, исследуя, и я не могу найти это. Есть ли способ загрузить blob, который уже был загружен в blobstore в Google, и загрузить его на мой диск. Я могу создавать новые документы, но не загружать уже существующие файлы из blobstore на диск пользователя. Я не могу использовать FileOutputStream в среде Google App Engine, и я не могу использовать URL-адрес загрузки blobstore, как кажется.Google Blobstore для Google Диска
1
A
ответ
0
Я предполагаю, что у вас есть токен доступа OAuth2. Если это так, что-то вроде следующего должно выполнить эту работу. Это требует чтения файла blob в массив байтов. Я не нашел способ делать потоковое вещание, поэтому, если файл большой, вам придется прибегнуть к написанию blob в дисковод.
import com.google.api.client.http.ByteArrayContent;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.model.File;
import com.google.api.services.drive.model.ParentReference;
import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
// creates the credential object from the OAuth2 Access Token
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(TRANSPORT).setJsonFactory(JSON_FACTORY)
.setClientSecrets(clientSecrets.getWeb().getClientId(), clientSecrets.getWeb().getClientSecret())
.build();
credential.setAccessToken(accessToken);
Drive drive = Drive.Builder(TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME).build();
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
// reads the blobstore file into a byte array
BlobKey blobKey = new BlobKey(blobKeyStr);
byte[] blobBytes = blobstoreService.fetchData(blobKey, 0, BlobstoreService.MAX_BLOB_FETCH_SIZE-1);
// creates the google drive file
String parentId = ...; // find the parent reference for the google drive file
File file = new File();
file.setMimeType(mimeType);
file.setTitle(...);
file.setParents(Arrays.asList(new ParentReference().setId(parentId)));
drive.files().insert(file, new ByteArrayContent(mimeType, blobBytes)).execute();
Смежные вопросы
- 1. API для Google Диска
- 2. Разрешения для Google Диска
- 3. ярлыки для Google Диска
- 4. ContentProvider для Google Диска
- 5. Google Blobstore против хранилища облачных хранилищ Google
- 6. Скрипт Google Apps для поиска Google Диска
- 7. Ошибка Google Android для Google Диска
- 8. Файл загрузки Google API для Google Диска
- 9. получить идентификатор папки для диска Google Диска
- 10. Google App Engine Blobstore Images
- 11. Google App Engine Blobstore учебник
- 12. Постоянное разрешение для Google Диска
- 13. Прямая ссылка для Google-диска
- 14. Инициализация API для Google Диска
- 15. Android API для Google Диска?
- 16. Аутентификация Google Диска для устройств
- 17. API Google Диска не отображает все файлы с Google Диска
- 18. Поведение API Google Диска
- 19. Просмотров пользователей Google Диска
- 20. Google Диска OCR Android
- 21. Авторизовать API Google Диска
- 22. Автоматизация Google Диска - server2server
- 23. Github с Google Диска
- 24. API Google Диска | PHP
- 25. Авторизация Google Диска с помощью Google +
- 26. Написание сценария Google для создания журнала изменений для Google Диска
- 27. Google Android API для Android - приложение для Google Диска
- 28. Учетные данные Google Диска
- 29. Идентификатор папки Google Диска
- 30. API Google Диска, метаданные