我的代码可以在已部署的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访问。

09-07 01:55