I'm currently working on a project where we should have the possibility to upload files to the Google Cloud Storage. So we created an Bucket and I added the Maven dependency to my local "normal" application:
<dependencies>
<dependency>
<groupId>com.google.appengine.tools</groupId>
<artifactId>appengine-gcs-client</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
Then I started to read a local file and tried to push that to the Google Cloud Storage in a simply 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();
}
My copy method looks like this:
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();
}
}
All I get from that is this:
The API package 'file' or call 'Create()' was not found.
After searching a lot in google, reading documentations even searching in bing i found this entry: The API package 'channel' or call 'CreateChannel()' was not found
It says that there is no way to use the appengine.tools -> gcs-client without such an AppEngine App. But is there an easy way to upload files to the Google Cloud Storage without to be forced on using the AppEngine service?