我已经实现了从客户端到Firebase存储的文件上传。 除 iOS 上的 Mobile Safari 以外,它在任何地方都可以正常工作。
代码非常简单,实际上与指南相同: https://firebase.google.com/docs/storage/web/upload-files
const storageRef = firebase.storage().ref();
const fileRef = storageRef.child(`${uid}/${fileId}`);
const metadata = {
contentType: file.type,
customMetadata: { uploadedBy: email, uploadedDate: new Date().toDateString() }
};
return fileRef.put(file, metadata)
我设法检查了iOS手机上的网络和控制台,并报告了此错误:
无效的请求。 X-Goog-Upload-Command标头丢失。
网络请求附加了以下查询参数:
upload_protocol=resumable
但是,在Windows Chrome上检查相同的请求,它设置为
upload_protocol=multipart
我猜想当可恢复时, X-Goog-Upload-Command 标头是必需的。
但是,由于它是执行请求并设置upload_protocol的基础,所以不确定如何添加它。
无论如何,我都会以为这会起作用。我没有在iOS文档中看到任何其他设置: https://firebase.google.com/docs/storage/ios/upload-files