Я использую следующий код:Google облако хранения с использованием потока вместо ByteBuffer - Java
GcsService gcsService = GcsServiceFactory.createGcsService();
GcsFilename filename = new GcsFilename(BUCKETNAME, fileName);
GcsFileOptions options = new GcsFileOptions.Builder()
.mimeType(contentType)
.acl("public-read")
.addUserMetadata("myfield1", "my field value")
.build();
@SuppressWarnings("resource")
GcsOutputChannel outputChannel =
gcsService.createOrReplace(filename, options);
outputChannel.write(ByteBuffer.wrap(byteArray));
outputChannel.close();
Проблема заключается в том, что, когда я пытаюсь сохранить видео файлы, я должен сохранить файл в ByteArray, который может вызвать проблемы с памятью.
Но я не могу найти какой-либо интерфейс, чтобы сделать то же самое с потоком.
вопросы:
Должен ли я беспокоиться о проблемах MEM в Appengine СРВ, или они способны держать 1 мин видео с в мем?
Возможно ли использовать поток вместо массива байтов? как?
Я читаю байты как
byte[] byteArray = IOUtils.toByteArray(stream);
Должен ли я использовать массив байтов в качестве реального буфера и просто читать куски и загружать их в GCS? как это сделать?
Обратите внимание, что блоб API больше не поддерживается - я не думаю, что этот код будет работать. –
Это не blob api. Просто потому, что вы видите класс с именем BlobInfo, это не значит, что это неподдерживаемый blob api. В настоящее время я использую этот api в производственной системе, которая получает значительный трафик. Пожалуйста, посмотрите здесь и пересмотрите ваш downvote: http://googlecloudplatform.github.io/gcloud-java/0.2.0/index.html – depsypher