我正在编写一个应用程序,用户可以在其中将图片从 gae 上传到云存储。上传有点棘手,因为我必须将上传的文件转换为字节格式。我遵循了下一个教程: 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 个字节。有任何想法吗?