我使用 firebase JS sdk 将音频文件上传到 firebase-storage。发生这种情况时,我需要根据进行上传的经过身份验证的用户来处理它(我将其上传到其他地方进行处理)。这意味着我需要在通过存储规则验证 uid 后才能访问该 uid,以确保其安全。
在研究这个问题时,我发现了一些解决方法,例如使用元数据发送用户的 ID 令牌,但在我看来这是一个坏主意,因为它可能被滥用。
我发现这个问题也几乎正是我的问题。我链接的问题已经存在一年多了,所以我认为值得再次询问。
我认为主要原因是存储规则,它确实可以访问 uid ( https://firebase.google.com/docs/storage/security/user-security )。如果我可以使用那里的 uid 来允许/禁止访问,我假设也可以在我的 onFinalize 触发器中访问 uid。我只是似乎无法找到如何。
firebase firebase-authentication google-cloud-functions firebase-storage
我已经尝试了较旧的方法
var bitmap =MediaStore.Images.Media.getBitmap() ,该方法现已不再使用,我在网上冲浪并没有找到令人满意的方法。请建议一种将图像上传到 Firebase 存储的方法。
我正在尝试使用 Firebase 云功能将图像上传到存储。当我从浏览器运行该函数时,我收到“0”响应,表明它失败。然后我检查日志并显示错误:
上传不好![错误:ENOENT:没有这样的文件或目录,stat 'https://i2.wp.com/lifemadesimplebakes.com/wp-content/uploads/2018/03/How-To-Make-Fruit-Salad-680x680.jpg '] {
但图像网址确实存在。所以我想知道为什么它不起作用?这是我的整个云功能:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
exports.uploadTest = functions.https.onRequest(async (request, response) => {
const url = 'https://i2.wp.com/lifemadesimplebakes.com/wp-content/uploads/2018/03/How-To-Make-Fruit-Salad-680x680.jpg';
admin.initializeApp();
const bucket = admin.storage().bucket('my-bucket.appspot.com');
bucket.upload(url, {
destination: "myFolder/myFile.png"
}).then(() => {
console.log("Upload good!");
response.send('1');
return true
}).catch(err => {
console.error("Upload bad!", err);
response.send('0');
});
})
Run Code Online (Sandbox Code Playgroud) 嘿,我已经找到了如何上传到 firebase 存储中:
admin.initializeApp({
credential: secret,
databaseURL: secret,
storageBucket: secret,
});
var bucket = admin.storage().bucket();
const uploadToFireStorage = (filename, query, fileType, imageURL) => {
bucket.upload(filename).then(console.log("uploaded"));
};
Run Code Online (Sandbox Code Playgroud)
正如您通过我的bucket.upload 函数所看到的,我可以上传到firebase 存储,但它会上传到根文件夹中,我想将其放在/foodImages/myfile.png 下,例如有什么想法吗?
javascript google-cloud-storage firebase google-cloud-platform firebase-storage
我创建了一个按钮来从 firestore 获取的 URL 下载文件,我也需要文件名,有什么方法可以使用我获取的 URL 引用文件吗?我看到了类似问题的答案,但找不到正确的解决方案。
这是我得到的URL类型
https://firebasestorage.googleapis.com/v0/b/student-app.appspot.com/o/img%2FFileName.pdf?alt=media&token=367f598b-425d-4ce0-be2b-804d2103d69e
Run Code Online (Sandbox Code Playgroud)
有什么办法可以从中提取文件名吗?或者通过任何参考方法?
问题:
我正在使用 Firebase Cloud Functions 制作一个网络应用程序。我目前已将 Firebase 连接到我的项目的后端。但是,我需要允许用户上传大约 50MB 左右的文件。
不幸的是,我最近才发现 Firebase Cloud Functions 的最大 HTTP 请求大小为 10MB。

出于安全目的,我有安全规则(显然),因此我不能允许任何人将任何内容上传到 Firebase 存储或 Firestore。由于用户在后端而不是前端进行身份验证,因此我无法在不触发安全规则的情况下使用 Firebase 功能上传到 Firebase 存储和 Firestore。
当我想要保持 Firebase 连接到后端时,对于此类问题有什么好的解决方案吗?谢谢。
file-upload firebase firebase-authentication google-cloud-functions firebase-storage
我目前正在学习如何在 java 中使用 android studio,并尝试制作一个社交媒体应用程序。我目前正在创建一个编辑个人资料页面,用户可以在其中更新其详细信息并上传个人资料图片。
我一直在关注在线教程,我遇到的所有教程都使用 startActivityForResult 方法。它已被划掉,并且不会调用该方法,因为它已被弃用。但我不知道该用什么来代替。
`ProfileImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//open gallery
Intent OpenGalleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(OpenGalleryIntent, 1000);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @androidx.annotation.Nullable Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1000){
if(resultCode == Activity.RESULT_OK){
Uri imageUri = data.getData();
ProfileImage.setImageURI(imageUri);
UploadImageToFirebase(imageUri);
}
}
}
private void UploadImageToFirebase(Uri image){
StorageReference fileRef = storageReference.child("Profile.jpg");
fileRef.putFile(image).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(Edit_Profile.this, "Image Uploaded", Toast.LENGTH_SHORT).show();
} …Run Code Online (Sandbox Code Playgroud) 我正在为我的 Android 和 ios 应用程序开发上传功能,并且我正在使用 Firebase Storage。我正在上传大小仅超过 100kb 的小图像。在我的 Android 设备上一切正常,但由于某种原因我的 ios 无法按预期工作。这是有问题的代码:
final snapshot = await _firebaseStorage
.ref()
.child("$profilePicsFolder/$fileName")
.putFile(resImg);
final String imgUrl = await snapshot.ref.getDownloadURL();
await auth.updateUserProfilePicture(photoUrl: imgUrl);
Run Code Online (Sandbox Code Playgroud)
这里的问题是 putFile() 在 ios 上需要很长时间,但在 android 上只需要几秒钟。我注意到,即使执行仍在等待 putFile() 函数几分钟,当我直接检查 Firebase 存储时,我注意到文件几乎立即上传。
不确定我在这里做错了什么。
我想在我的iOS应用程序中创建一个按钮,当用户点击它时,他/她有两个选择:从相册中选择一张照片或从相机拍摄照片到firebase数据库.
为了实现这一目标,我必须遵循什么结构?将图像上传到firebase数据库!
我有多个存储在数组中的图像(存储在数组中的图像路径)。然后我使用 for 循环上传每张图片,但只上传最后一张图片。我使用 react native fetch blob 和 firebase
for(var i = 0; i < this.state.imagesUri;i++){
Blob.build(RNFetchBlob.wrap(this.state.imagesUri[i].path),{ type : 'image/jpeg' })
.then((blob) => firebase.storage()
.ref("userPhoto").child("image"+i)
.put(blob, { contentType : 'image/png' }).then(()=>{
var storage = firebase.storage().ref("userPhoto/").child("image"+i);
storage.getDownloadURL().then((url)=>{
var url = url;
});
})
);
}Run Code Online (Sandbox Code Playgroud)
javascript react-native react-native-android firebase-storage
firebase-storage ×10
firebase ×7
flutter ×2
ios ×2
javascript ×2
android ×1
camera ×1
dart ×1
file-upload ×1
image ×1
java ×1
kotlin ×1
node.js ×1
react-native ×1
swift ×1