【发布时间】:2021-09-04 12:03:00
【问题描述】:
我正在将文件从 vuejs 应用程序上传到 firebase 存储。我可以成功写入 firebase 存储,但文件的字节数为零。
文件通过 GraphQL 突变发送到后端:
uploadStream: {
type: GraphQLBoolean,
args: {
id: {
type: GraphQLString
},
file: {
type: GraphQLUpload
}
},
// eslint-disable-next-line no-unused-vars
resolve: async (root, { id, file }, context) => {
const { filename, mimetype, createReadStream } = await file
const stream = createReadStream()
const ext = filename.substr(filename.lastIndexOf('.') + 1)
storageService.upload(id, ext, mimetype, stream)
}
}
我这样写到存储中:
const upload = async (filename, ext, mimetype, stream) => {
const metadata = {
metadata: {
// This line is very important. It's to create a download token.
firebaseStorageDownloadTokens: uuid()
},
contentType: mimetype
}
filename = `profiles/${filename}.${ext}`
stream.pipe(
bucket
.file(filename, {
gzip: true,
metadata: metadata
})
.createWriteStream()
.end()
)
}
我使用 firebase-admin SDK 正在检索存储桶:
const firebaseConfig = {
credential: firebase.credential.cert(JSON.parse(firebase_credential)),
databaseURL: firebase_db,
storageBucket: firebase_storage
}
firebase.initializeApp(firebaseConfig)
const db = firebase.firestore()
const bucket = firebase.storage().bucket()
我不明白为什么上面的代码将零字节文件写入存储。
【问题讨论】:
标签: javascript node.js firebase google-cloud-storage firebase-storage