
[英]Vue 3 Firebase 9 Vuex, in actions get URL of file after uploading to storage
[英]How to get the download url after uploading a file to firebase storage in springboot
我正在尝试将图像上传到 firebase 存储并将下载的 URL 保存在我的数据库中。 但是,与在 android 中执行上传时不同,我找不到在 springboot 中获取下载 Url 的方法。保存媒体 URL 不起作用,因为它没有访问令牌。 下面是我用来将图像上传到 firebase 的代码。
File file = convertMultiPartToFile(multipartFile);
Path filePath = file.toPath();
String objectName = generateFileName(multipartFile);
BlobId blobId = BlobId.of(bucketName, objectName);
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build();
Blob blob = storage.create(blobInfo, Files.readAllBytes(filePath));
log.info("File " + filePath + " uploaded to bucket " + bucketName + " as " + objectName);
return blob.getMediaLink();
这周我遇到了同样的问题,当时我正在开发一个负责将文件上传到 Firebase 并检索可下载的 URL 以便将其保存在数据库中的端点。 似乎 Firebase Admin Java JDK 没有提供任何功能来直接检索刚刚上传的文件的可下载 URL 或检索访问令牌以构建它。 尽管有一个配置为名为“firebaseStorageDownloadTokens”的元数据的属性,可以在文件上传到 Firebase 并存储必要的令牌以授权下载文件后找到它,但它仍然无法正常工作,因为没有为所有检索到此属性要求,老实说,我找不到为什么会这样。 无论如何,对我有用的解决方案是在上传文件之前添加“firebaseStorageDownloadTokens”定向作为 BlobInfo 的元数据。 它将使 Firebase 假设传递的值作为正在上传的文件的访问令牌,并且一旦处理此信息,就可以构建可下载的 URL。
在您的场景中,它会像:
File file = convertMultiPartToFile(multipartFile);
Path filePath = file.toPath();
String objectName = generateFileName(multipartFile);
BlobId blobId = BlobId.of(bucketName, objectName);
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setMetadata(Map.of("firebaseStorageDownloadTokens","randomAccessToken")).build();
Blob blob = storage.create(blobInfo, Files.readAllBytes(filePath));
log.info("File " + filePath + " uploaded to bucket " + bucketName + " as " + objectName);
return blob.getMediaLink().concat("&token=randomAccessToken");
Firebase 默认情况下不会返回服务帐户上的任何下载 URL,直到在客户端 SDK 中,因此,您可以做的是,按照 Z035489FF8D092741943E4A8324 构建自己的下载 URL。
`https://firebasestorage.googleapis.com/v0/b/<bucket name>/o/%s?alt=media`
`<bucket name>` = Firebase Storage Bucket Name
`%s` = The media name (file name)
上传文件到 firebase Storage 后可以获取下载链接:storage.get(BlobId.of(bucketName,fileName)).getSelfLink();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.