我的代码可以在已部署的Google App Engine上完美运行,但是在本地调试时却不能。返回的GcsFileMetadata为null,并且gcsService.openReadChannel(gcsFilename,0)给出FileNotFoundException,下面有更多详细信息。 综上所述,问题在于本地应用程序引擎无法访问Google云存储。我该如何解决?有任何解决方法吗?
这是代码
GcsFilename gcsFilename = new GcsFilename(BUCKET_NAME, progress.imageName);
GcsFileMetadata gcsFileMetadata = gcsService.getMetadata(gcsFilename);
if (gcsFileMetadata == null) throw new Exception("gcsService.getMetadata(gcsFilename) returned null");
int fileSize = (int) gcsFileMetadata.getLength();
ByteBuffer byteBuffer = ByteBuffer.allocate(5*1024*1024);
GcsInputChannel gcsInputChannel = gcsService.openReadChannel(gcsFilename, 0);
gcsInputChannel.read(byteBuffer);
gcsFileMetadata在本地调试时为null,但在部署时工作正常。我将其注释掉,并在此行收到以下错误:
GcsInputChannel gcsInputChannel = gcsService.openReadChannel(gcsFilename, 0);
这是错误:
java.io.FileNotFoundException: com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService@54381103: No such file: GcsFilename(cloudimagesbucketname, image_20150105_180444)
最佳答案
没有解决方法可访问localhost上的Google Cloud Storage。您必须在appengine上部署代码,然后才能访问GCS服务。这是Google提供的安全服务,无法通过localhost访问。