firebase Google Cloud存储下载URL具有文件夹名称,该名称将成为文件名

Ana*_*kar 3 html5 google-chrome google-cloud-storage firebase firebase-storage

我们正在使用Firebase Google Cloud Storage Bucket来存储我们的文件.

当登录用户想要下载文件保存在某个文件夹Eg:123/admin/1469611803143/123.xlsx

生成的网址为 https://firebasestorage.googleapis.com/v0/b/MYWEBSITE.appspot.com/o/123%2Fadmin%2F1469611803143%2F123.xlsx?alt=media&token=whatever_alpa_numeric_token

当我下载此文件时,文件名将为123%2Fadmin%2F1469611803143%2F123.xlsx

而不是123.xlsx

我们尝试使用download属性来更改文件名

但是这并没有将文件名更改为123.xlsx

请帮忙

dio*_*uze 7

我对firebase很新,但我用以下代码实现了这一点:

var storageRef = firebase.storage().ref();
var child = storageRef.child("your path");
var uploadTask = child.put(<file>);

uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
function(snapshot){
// HANDLE TASK PROGRESS
},
function(error){
// HANDLE ERROR
},
function(){
// UPLOAD SUCCESSFULL
  var newMetadata = {
    contentDisposition : "attachment; filename=" + fileName
  }
  child.updateMetadata(newMetadata)
})  
Run Code Online (Sandbox Code Playgroud)


Mik*_*ald 2

这是(幸运或不幸)有意为之的行为。从技术上讲,Firebase 存储中的文件以完整路径存储(123%2Fadmin%2F1469611803143%2F123.xlsx实际上文件名也是如此 - 斜线和转义百分号是名称的一部分,并且仅在 UI 中表示为路径分隔符),这就是我们获得此信息的方式行为。

我们将来可能会修改下载的工作方式(我们将截断名称),但我们一直忙于修复其他错误并完善更高优先级的部分。