我的代码在已部署的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)
答案 0 :(得分:1)
无法通过localhost访问Google云端存储。您必须在appengine部署代码,然后才能访问GCS服务。这是来自谷歌的安全服务,无法在localhost访问。