我正在使用firebase存储来上传文件,但是当我上传时,我收到了这个错误
E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.android.gms.internal.zzand: Please sign in before trying to get a token.
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索但无法得到答案!我已经登录了firebase.
android firebase firebase-realtime-database firebase-storage
我的程序中有一个小错误。
我的应用程序中有 firebase 存储。我想让用户将图像上传到存储。
问题是当用户上传图像然后尝试上传另一张图像时。该程序会覆盖之前上传的图像。
我想要的是当用户想要上传另一张图像时避免“覆盖”。并将两个图像保存在不同的文件中
let currentUser = Auth.auth().currentUser
let StorageRefrenece = Storage.storage().reference()
let posterImageRef =
StorageRefrenece.child("posters").child(currentUser!.uid).child("posterOne.jpg")
Run Code Online (Sandbox Code Playgroud)
谢谢
火力地堡存储声称这里的iOS版的文件,它
无论网络质量如何,都会执行上传和下载.上传和下载非常强大,这意味着它们会在停止的地方重新启动
所以人们会期望它在上传时处理连接丢失,但似乎没有.
使用iOS中的以下Swift代码,我可以在有连接时执行上传,但如果设备没有连接或者它与网络断开连接,则会进入故障状态.
let storage = FIRStorage.storage().referenceForURL("VALID_URL_REMOVED")
let imagesRef = storage.child("images/test.jpg")
let data = UIImageJPEGRepresentation(observationImage!, 0.7);
let uploadTask = imagesRef.putData(data!, metadata: nil)
uploadTask.observeStatus(.Progress) { snapshot in
// Upload reported progress
if let progress = snapshot.progress {
let percentComplete = 100.0 * Double(progress.completedUnitCount) / Double(progress.totalUnitCount)
print("percent \(percentComplete)")
}
}
uploadTask.observeStatus(.Success) { snapshot in
// Upload completed successfully
print("success")
}
uploadTask.observeStatus(.Failure) { snapshot in
print("error")
print(snapshot.error?.localizedDescription)
}
Run Code Online (Sandbox Code Playgroud)
此代码的调试输出如下.
/*
percent 0.0
percent 0.0044084949781492
2016-06-30 11:49:16.480 Removed[5020:] <FIRAnalytics/DEBUG> Network status …Run Code Online (Sandbox Code Playgroud) 我正在使用firebase存储来上传头像(original.jpg).在node.js后台进程中,我使用gm调整它们的大小,然后将它们放回我的firebase存储桶中.这些图片是公开可读的,请参阅我的存储规则:
service firebase.storage {
match /b/xxx.appspot.com/o {
match /images {
match /{allImages=**} {
allow read;
}
match /{userId}/avatar/original.jpg {
allow write: if request.auth.uid == userId;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将图像的url存储在firebase数据库中:
https://firebasestorage.googleapis.com/v0/b/xxx.appspot.com/o/images%2Fyyy%2Favatar%2Fzzz-small.jpg?alt=media
Run Code Online (Sandbox Code Playgroud)
我在文件上传后立即检索到了(web sdk)var downloadURL = uploadTask.snapshot.downloadURL;; 剥离令牌参数,因为它将被公开; 并且zzz-small.jpg已经取代了original.jpg.
它工作,图片显示.
但即使图片是40x40px jpg,它也很慢.在实际下载文件之前它会挂起一段时间,请参阅Chrome网络记录:
文件是158B,在下载之前还有〜1s等待~3ms ...
firebase存储应该和CDN一样快吗?有没有更快的方法来调用公共可读文件?
[编辑]从Firebase支持获得一些反馈:
我们肯定知道很多用户,例如你自己,在从欧洲下载文件的速度很慢时遇到了问题.我们正在探索可能的解决方案,但我目前无法分享任何细节或时间表.我们会继续考虑您的反馈意见.
如有任何进一步的更新,请留意我们的发行说明.
我忘了提到我在欧洲和美国的存储.
您好我之前询问过有关使用Firebase数据库中的Base64显示图像的问题.建议使用firebase存储.我重新编写了代码,所有内容都加载到firebase存储和数据库中.我遇到的问题是当我保存数据时,没有任何内容填充到我的recyclerview中.一切都是空白的.
你可以提供给我这个工作的任何帮助都会很棒.谢谢.
编辑:在我的活动类中,我调用一个按钮clicklistener来激活相机.拍摄照片后,它将保存到Firebase存储.然后我从存储中下载图像并将其显示在recyclerview中.我理解上传部分,但我很难理解下载和显示部分.谢谢.
viewholder:绑定方法
public void bind (ImageProgress progress){
Glide.with(activity).load("").into(image);
}
}
Run Code Online (Sandbox Code Playgroud)
适配器
@Override
public ProgressViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
return new ProgressViewHolder(activity, activity.getLayoutInflater().inflate(R.layout.weight_progress_list, parent, false));
Run Code Online (Sandbox Code Playgroud)
主要活动课
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.weight_progress);
saveButton = (Button) findViewById(R.id.saveButton);
progressStatusEditText = (EditText) findViewById(R.id.progressStatusEditText);
progressList = (RecyclerView) findViewById(R.id.progressList);
mImageButton = (ImageButton) findViewById(R.id.takePictureButton);
capturedImage=(ImageView)findViewById(R.id.capturedImageView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
progressList.setHasFixedSize(false);
progressList.setLayoutManager(layoutManager);
//take picture button
mImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openCamera();
}
});
mDatabaseReference = database.getReference("Progress");
saveButton.setOnClickListener(new View.OnClickListener() { …Run Code Online (Sandbox Code Playgroud) 有没有办法将多个文件上传到Firebase存储.它可以在单次尝试中上传单个文件,如下所示.
fileButton.addEventListener('change', function(e){
//Get file
var file = e.target.files[0];
//Create storage reference
var storageRef = firebase.storage().ref(DirectryPath+"/"+file.name);
//Upload file
var task = storageRef.put(file);
//Update progress bar
task.on('state_changed',
function progress(snapshot){
var percentage = snapshot.bytesTransferred / snapshot.totalBytes * 100;
uploader.value = percentage;
},
function error(err){
},
function complete(){
var downloadURL = task.snapshot.downloadURL;
}
);
});
Run Code Online (Sandbox Code Playgroud)
如何将多个文件上传到Firebase存储.
我正在开发用户单击图像的android应用程序,它存储在firebase中,云函数处理此图像并以文本文件的形式将输出存储在firebase中.为了在android中显示输出,应用程序会一直检查输出文件是否存在.如果是,则它在应用程序中显示输出.如果不是,我必须等待文件,直到它可用.
我无法找到任何文档来检查Firebase中是否存在任何文件.任何帮助或指示都会有所帮助.
谢谢.
我正在尝试将图像上传到Firebase存储,并将多个特定元数据保存到Firebase Cloud.我用JavaScript编写代码.
目标是将自定义元数据设置为Firebase Cloud,例如从用户必须填写的文本输入字段.
这就是我将图像存储到Firebase存储的方式:
storageRef.child('images/' + file.name).put(file, metadata).then(function(snapshot) {
console.log('Uploaded', snapshot.totalBytes, 'bytes.');
console.log(snapshot.metadata);
var url = snapshot.downloadURL;
console.log('File available at', url);
// [START_EXCLUDE]
document.getElementById('linkbox').innerHTML = '<a href="' + url + '">Click For File</a>';
// [END_EXCLUDE]
}).catch(function(error) {
// [START onfailure]
console.error('Upload failed:', error);
// [END onfailure]
});
// [END oncomplete]
}Run Code Online (Sandbox Code Playgroud)
我不知道如何在上传功能中集成另一项任务来将元数据写入Firebase Cloud.任何帮助将不胜感激!
@eykjs @Sam Storie:谢谢你的帮助.我改变了我的代码.现在,有一个错误,我无法弄清楚,什么是错的.错误:TypeError:undefined不是对象(评估'selectedFile.name')
我的代码:
var selectedFile;
function handleFileSelect(event) {
//$(".upload-group").show();
selectedFile = event.target.files[0];
};
function confirmUpload() {
var metadata = {
contentType: 'image',
customMetadata: {
'dogType': …Run Code Online (Sandbox Code Playgroud)javascript metadata firebase firebase-storage google-cloud-firestore
我正在使用 Flutter 开发一个 Android 应用程序。在我的应用程序中,有一个功能,用户可以从他们的设备上传图像。为了存储图像,我使用了 firebase 云存储,这是我用于将文件上传到 firebase 云存储的代码的一部分。
String fileName = "${this.userDetails['id']}_${uuid.v1()}";
String fileExtension = p.extension(_imageFile.path);
String newFileName = p.setExtension(fileName, fileExtension);
print("STEP 1: New filename of image - 111: $newFileName");
final StorageReference ref = FirebaseStorage.instance.ref().child("images/users/original/$newFileName");
final StorageUploadTask uploadTask = ref.put(
_imageFile, const StorageMetadata(contentLanguage: "en")
);
print("STEP 2: Image file uploaded - 222");
final Uri downloadUrl = (await uploadTask.future).downloadUrl;
print('STEP 3: downloadUrl data received - 333 : $downloadUrl');
final http.Response downloadData = await http.get(downloadUrl);
print('STEP 4: Download data received - …Run Code Online (Sandbox Code Playgroud) 详情如下:https://issuetracker.google.com/issues/113672049
交叉发布在这里:https://github.com/GoogleCloudPlatform/google-cloud-python/issues/5879)
从Python中的Google Cloud功能使用Firebase存储API时,我收到连接重置错误.
部署的函数调用一个blob-get ie
from firebase_admin import storage
def fn(request):
bucket = 'my-firebase-bucket'
path = '/thing'
blob = storage.bucket(bucket).get_blob(path)
Run Code Online (Sandbox Code Playgroud)
失败是间歇性的; 该功能的成功率约为90%.
在部署后第一次调用函数时,似乎更有可能失败.
python google-cloud-storage google-cloud-functions firebase-storage
firebase-storage ×10
firebase ×8
android ×3
javascript ×2
swift ×2
dart ×1
flutter ×1
ios ×1
metadata ×1
python ×1