当前位置: 首页 > 知识库问答 >
问题:

Appengine图像服务URL,删除服务URL问题

谯英彦
2023-03-14

我在上传到谷歌云存储的图像文件上创建了一个imageServing url,使用:

String key = "/gs/<bucket-name>/<path>";
ImagesService imagesService = ImagesServiceFactory.getImagesService();
ServingUrlOptions options = ServingUrlOptions.Builder
                .withGoogleStorageFileName(key)
                .imageSize(900) // Optional.
                .crop(true); // Optional.
String servingUrl = imagesService.getServingUrl(options);

但似乎没有删除此url的方法。可用方法“deleteServingUrl”接受一个我不使用的bloKey。

这是否意味着我不需要删除servingUrl?

///////编辑

将Appengine与objectify一起使用。创建了一个servlet,UserImageEndpoint在web中定义了它。xml格式:

<servlet>
    <servlet-name>UserImageEndpoint</servlet-name>
    <servlet-class>reach.backend.Servlets.UserImageEndpoint</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>UserImageEndpoint</servlet-name>
    <url-pattern>/userImageEndpoint</url-pattern>
</servlet-mapping>

Servlet类:

public class UserImageEndpoint extends HttpServlet {

private static final Logger logger = Logger.getLogger(UserImageEndpoint.class.getName());
private static final String BUCKET_NAME_IMAGE = "xxxx-yyyy";


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //
    //
    //
    GcsFilename gcsFilename = new GcsFilename(BUCKET_NAME_IMAGE, actualImageId);
    GcsService gcsService = GcsServiceFactory.createGcsService();
    //this works, I get the meta-data, hence I am able to access
    logger.info(gcsService.getMetadata(gcsFilename).toString());
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    BlobKey blobKey = blobstoreService.createGsBlobKey(
                        "/gs/" + gcsFilename.getBucketName() + "/" + gcsFilename.getObjectName());
    logger.info("Requesting fileName - " + blobKey.getKeyString());
    servingURL = ImagesServiceFactory.getImagesService().getServingUrl(
                        ServingUrlOptions.Builder.withBlobKey(blobKey));

最后一行崩溃:

JAVAlang.IllegalArgumentException:ACCESS_DENIED:at com.google.阿彭金。应用程序编程接口。图像。ImagesServiceImpl。getServingUrl(ImagesServiceImpl.java:282)

/////EDIT ling no.282似乎是方法deleteServingUrl(BobKey bbloKey),我现在甚至没有调用...

共有1个答案

章玮
2023-03-14

正如@konqi指出的,文档中的重要部分指出,如果文件已经通过云存储(Cloud.google.com/appengine/docs/java/images)公开,则无法获取服务url

我有完全相同的问题,但通过在尝试使用Bblostore API创建服务url之前未将ACL设置为云存储中的公共来解决它。

 类似资料:
  • 我正在尝试让Firebase存储与Imgix或cloudinary这样的图像服务一起工作。然而,Firebase提供的下载URL似乎不能与这些服务一起工作。 例如:Cloudinary说您可以获取如下所示的图像: http://res.cloudinary.com/demo/image/fetch/http://upload.wikimedia.org/wikipedia/commons/0/0C

  • 我正在尝试从数据库中删除记录,以及从服务器中删除该记录的上载图像。我在控制器中有这个功能。 取消链接(C:\xampp\htdocs\larapro\public\newuploads\ 如果我使用 它显示: 解除关联(C: mpp\htdocs\larapro\Public\ewaddads{1470667358.png}):无效参数 我只是想知道为什么链接中的x和n丢失了。

  • 我试图制作一个Spring Boot Soap WebService应用程序,并按照Get Start(https://Spring.io/guides/gs/production-web-service/)示例学习如何完成该操作。 我已经创建了我想要的,但是我在这个设置中有两个URL问题,我找不到应该更改什么配置来解决这个问题: WSDL URL basic是localhost:8080/ws/

  • 我是OSGI的新手。我使用cxf和蓝图开发了一个学生Rest服务。将其部署在karaf中。默认情况下karaf的URL中包含cxf。我发现我可以在etc文件夹中配置属性(org.apache.cxf.servlet.context=/学生),或者我可以在karaf中运行config:编辑/setprop/更新/命令。这样我就可以用一些自定义值替换url中的cxf。但是现在我想从我的url中删除CX

  • 我只是最近迁移一些旧的博客文章从一个网站到另一个。图像也已导入。然而,现在我的大多数图像返回404错误。 图片目前正在链接到/wp content/uploads/2018/05/image_name-800x600.jpg。我的问题是800x600是已添加的自定义图像大小。我尝试为800x600添加主题支持,然后使用“强制重新生成缩略图”WordPress插件重新生成缩略图。这似乎没有解决任何问

  • 问题内容: 我有一个Angular服务/提供程序,将json数据提供给我的控制器,效果很好: 但是 我还需要将json数据从另一个文件提供给同一控制器。 在哪里可以找到如何编写将两个文件都提供给控制器的服务? 问题答案: 您可以更新服务以返回资源的哈希,而不是单个哈希: 您将可以使用它,并在函数名末尾添加和,并且必须将其注入到控制器中,然后再将服务注入到控制器本身中。