В настоящее время я работаю над проектом, в котором у нас должна быть возможность загружать файлы в облачное хранилище Google. Итак, мы создали Bucket, и я добавил зависимость Maven в свое локальное «обычное» приложение:
<dependencies>
<dependency>
<groupId>com.google.appengine.tools</groupId>
<artifactId>appengine-gcs-client</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
Затем я начал читать локальный файл и попытался отправить его в облачное хранилище Google просто в main:
try {
final GcsService gcsService = GcsServiceFactory
.createGcsService();
File file = new File("/tmp/test.jpg");
FileInputStream fis = new FileInputStream(file);
GcsFilename fileName = new GcsFilename("test1213","test.jpg");
GcsOutputChannel outputChannel;
outputChannel = gcsService.createOrReplace(fileName, GcsFileOptions.getDefaultInstance());
copy(fis, Channels.newOutputStream(outputChannel));
} catch (IOException e) {
e.printStackTrace();
}
Мой метод copy
выглядит так:
private static final int BUFFER_SIZE = 2 * 1024 * 1024;
private static void copy(InputStream input, OutputStream output)
throws IOException {
try {
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = input.read(buffer);
while (bytesRead != -1) {
output.write(buffer, 0, bytesRead);
bytesRead = input.read(buffer);
}
} finally {
input.close();
output.close();
}
}
Все, что я получаю от этого, это:
The API package 'file' or call 'Create()' was not found.
После долгих поисков в google, чтения документации даже поиска в bing я нашел эту запись: Пакет API 'channel' или вызов 'CreateChannel()' не найден
В нем говорится, что невозможно использовать appengine.tools -> gcs-client
без такого приложения AppEngine. Но есть ли простой способ загружать файлы в облачное хранилище Google без необходимости использовать службу AppEngine?