GoogleCloudStorageにuploadしたファイルが表示されない。
お世話になっております。
現在ServletからGoogleCloudStorageへの画像アップロード処理を試しているのですが、
ファイルのアップロード自体は出来ているのですが、画像が壊れて?しまうようです。
手動でGCSのブラウザからアップロードしたファイルはServletからGETで表示させることはできています。
環境
Servlet: 2.5
GAE: 1.9.25
GCS Client Library: 0.5
Maven: 3.3.3
upload処理
private String bucketName = AppIdentityServiceFactory.getAppIdentityService().getDefaultGcsBucketName();
private final GcsService gcsService = GcsServiceFactory.createGcsService(new RetryParams.Builder()
.initialRetryDelayMillis(10)
.retryMaxAttempts(10)
.totalRetryPeriodMillis(15000)
.build());
private static final int BUFFER_SIZE = 2 * 1024 * 1024;
...//ServletのdoPost内
GcsFilename filename = new GcsFilename(bucketName, directoryPath + "uploadfile.jpg");
GcsFileOptions options = new GcsFileOptions.Builder().acl("public-read").mimeType("image/jpeg").build();
try(OutputStream output = Channels.newOutputStream(outputChannel)) {
try (InputStream input = request.getInputStream()) {
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = input.read(buffer);
while (bytesRead != -1) {
output.write(buffer,0,bytesRead);
bytesRead = input.read(buffer);
}
}
}
GCSブラウザのアップロード状況(一番下のuploadfile.jpgがアップロードしたファイルです)
ファイルをクリックするとブラウザ上では左上に四角の枠みたいなのが表示されるだけです。
と表示されます。
画像のアップロードテストは
curl [アプリケーションURL] -F file=@test.jpg
としています。
GcsFileOptions.BuilderでmimeTypeを設定しないとタイプがbinary/octet-stremとなります。
アップロードされた添付画像のファイルはサイズやタイプは正常だと思うのですが、どうしてこのように表示されてしまうのでしょうか?
アップロードするには何か権限が必要なのでしょうか?
公開するためのチェックボックスも消えてしまいます。
宜しくお願い致します。