gpt4 book ai didi

java - 如何使用 Google Cloud Endpoints 返回文件?

转载 作者:行者123 更新时间:2023-12-01 18:04:42 24 4
gpt4 key购买 nike

我有一种方法可以生成包含一些数据库记录的 CSV 文件

    public static void generateCsvForAttendees( List<Attendee> attendeeList ) throws FileNotFoundException
{
PrintWriter pw = new PrintWriter(new File("test.csv"));

StringBuilder sb = new StringBuilder();

//Header
sb.append( "Id" );
sb.append( ',' );
sb.append( "Name" );
sb.append( ',' );
sb.append( "Lastname" );
sb.append('\n');

//Content
for( Attendee attendee: attendeeList )
{
sb.append( attendee.getId() );
sb.append( ',' );
sb.append( attendee.getUser().getName() );
sb.append( ',' );
sb.append( attendee.getUser().getLastname() );
sb.append( '\n' );

}

pw.write(sb.toString());
pw.close();
}

我希望该方法成为一个端点,以便从任何类型的客户端(网络或移动)调用它来下载它。在 Google Cloud Endpoint documentation File 没有作为有效返回类型的内容。如何创建返回文件的端点?

最佳答案

以下是如何将文件从端点保存到云存储并返回下载该文件的 URL。

1/在项目控制台中激活 Google Cloud Storage

2/在您的 Cloud Storage 实例中创建一个存储桶,名称为bucketName。可选:您可以设置此存储桶的访问权限。

3/在您的端点类中,创建一个 gcsService,如下所示:

private final GcsService gcsService = GcsServiceFactory.createGcsService(new RetryParams.Builder()
.initialRetryDelayMillis(10)
.retryMaxAttempts(10)
.totalRetryPeriodMillis(15000)
.build());

4/在您的方法中,创建一个 ByteArrayOutputStream:

ByteArrayOutputStream os = new ByteArrayOutputStream();

5/从 ByteArrayOutputStream 创建打印机

6/然后执行以下操作:

ByteBuffer buf = ByteBuffer.wrap(os.toByteArray());
GcsFilename gcsfileName = new GcsFilename(bucketName, bucketFileName);
//bucketFileName = your file name
GcsFileOptions options = new GcsFileOptions.Builder().mimeType("text/plain").build();
GcsOutputChannel outputChannel = gcsService.createOrReplace(gcsfileName, options);
outputChannel.write(buf);
outputChannel.close();

7/然后,您的文件应保存到云存储:您只需在字符串包装器中返回 URL 即可打开它。查看以下文档来决定使用哪个 URL(取决于用户是否需要进行身份验证,请参阅“用户被授予对对象的读取访问权限”部分)https://cloud.google.com/storage/docs/cloud-console#_accessing

关于java - 如何使用 Google Cloud Endpoints 返回文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37579767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com