getObject操作从camel-spring Boot 应用程序中的GCP返回元数据而不是对象内容

f1tvaqid  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(110)

我有一个spring Boot 应用程序,它使用camel连接到google对象存储来获取一个对象(文本或照片)。

package footballRestAPIs;

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.google.storage.GoogleCloudStorageConstants;
import org.springframework.stereotype.Component;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;

import core.ErrorProcessor;

@Component("ListObjFromGCP")
public class ListObjFromGCP extends RouteBuilder{

     @Override
        public void configure() throws Exception {

            onException(Exception.class).handled(true)
            .process(new ErrorProcessor());

            rest("/").produces("application.json") 
            .get("selectPhoto")

            .to("direct:selectPhoto");

        from("direct:selectPhoto")
        .process(new Processor() {
            @Override
            public void process(Exchange xchg) throws Exception {
                xchg.getIn().setHeader(GoogleCloudStorageConstants.OBJECT_NAME, "kitten.png");

            }
        })

        .to("google-storage://sagessapp_test?operation=getObject")
.log("${body}");

        }

}

在aplication.properties文件中,我有以下内容:

spring.cloud.gcp.credentials.location=classpath:/gcp-credentials.json
camel.component.google-storage.service-account-key=classpath:/gcp-credentials.json

这是.log("${body}")显示的内容:

Blob{bucket=sagessapp_test, name=kitten.png, generation=1637310466399682, size=0, content-type=application/octet-stream, metadata=null}

在blob里面我可以看到元数据,我没有找到任何关于如何返回对象内容的文档。有什么建议吗?提前谢谢!

lfapxunr

lfapxunr1#

默认情况下,返回对象元数据。
尝试使用alt=media参数返回对象数据:
默认情况下,它会在响应主体中使用对象资源进行响应。如果您提供URL参数alt=media,则它会在响应主体中使用对象数据进行响应。

相关问题