gpt4 book ai didi

java - 从gae移动cloudstorage中的文件

转载 作者:行者123 更新时间:2023-11-29 09:05:16 25 4
gpt4 key购买 nike

我正在编写一个应用程序,用户可以在其中将图片从 gae 上传到 cloudstorage。上传有点棘手,因为我必须将上传的文件转换为字节格式。我遵循了下一个教程: https://developers.google.com/appengine/docs/java/googlestorage/overview

我只换了

  writeChannel.write(ByteBuffer.wrap
("And miles to go before I sleep.".getBytes()));

ByteBuffer buffer = ByteBuffer.wrap(IOUtils.toByteArray(file.getInputStream))
writeChannel.write(buffer)

现在我必须重命名一些文件夹/图像。我阅读了有关它的相关文档,并尝试读取原始文件并在新位置重写它。但是我在将文件读取为字节文件并重写它时遇到了很多问题(我想我必须读取为字节文件)。

我最后一次尝试是这样的:

  public void copyFile(String from,String to) {
FileService fileService = FileServiceFactory.getFileService
AppEngineFile readableFile = new AppEngineFile(from)

readChannel = fileService.openReadChannel(readableFile,true)
int fileSize = fileService.stat(readableFile).getLength.intValue()
LOG.info("Size int " + fileSize)
ByteBuffer dst = ByteBuffer.allocate(fileSize)

readChannel.read(dst)

//readChannel.close() comment because fails to close the file.

GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
.setBucket("bucket_name")
.setKey(to)
.setAcl("public_read")

AppEngineFile writableFile = fileService.createNewGSFile(optionsBuilder.build())
val writeChannel = fileService.openWriteChannel(writableFile, true)

// This time we write to the channel directly.
writeChannel.write(dst)

// Now finalize
writeChannel.closeFinally()
readChannel.close()
}

当我使用此方法时,它写入文件,但为 0 字节。有什么想法吗?

最佳答案

FileService 已弃用。查看 Cloud Storage API,有一个 objects.copy您可以使用的方法。

然后您必须使用 objects.delete 删除该文件.

关于java - 从gae移动cloudstorage中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369893/

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