尝试上传到 firebase 时,我在控制台中收到下一个错误:
Uncaught FirebaseError: Firebase Storage: Invalid argument in `put` at index 0: Expected Blob or File.
Run Code Online (Sandbox Code Playgroud)
js:
var file, fileName, fileRef, storageImagesRef, storageRef, uploadTask;
var storageFolder = '/pictures/';
function getFileName(fileInput) {
file = fileInput.files;
fileName = file[0].name;
storageRef = firebase.storage().ref(storageFolder + fileName);
uploadTask = storageRef.put(file);
};
Run Code Online (Sandbox Code Playgroud)
html
<input type="file" onchange="getFileName(this)" accept=".png, .jpg, .bmp, .JPEG, .JPG, .svg, .tiff, .gif">
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我知道我们可以为存储在 Firebase 存储中的文件设置元数据。
我们可以根据元数据在 Firebase 存储中搜索/过滤文件吗?
正如我的标题所述,我的 tableView 中的图片会四处移动,并且在滚动 table view 时没有显示在正确的帖子上。在我停止滚动后,它们似乎又回到了原位。
我一直试图从以下文章中弄明白:
新的 Firebase 检索数据并迅速放在 tableview 上
从 Firebase 存储中检索图像以显示在 tableview swift 上
swift Firebase 按日期对 tableview 中的帖子进行排序
但我不知道如何使图片显示得更好。这是我所拥有的:
import UIKit
import FirebaseAuth
import FirebaseDatabase
import FirebaseStorage
class MainFeedTableViewController: UITableViewController {
var posts = [Post]()
let alert = AlertsViewController()
var databaseRef: FIRDatabaseReference! {
return FIRDatabase.database().reference()
}
var storageRef: FIRStorage! {
return FIRStorage.storage()
}
override func viewDidLoad() {
super.viewDidLoad()
fetchPosts()
}
// populates the tableView with posts content in real time
private func fetchPosts(){
let postRefs …Run Code Online (Sandbox Code Playgroud) 这个代码几个月前就已经运行了,我已经在GitHub上检查了一些其他代码并验证了这段代码在过去是否有效但我找不到解决方案.我已经找到了使用Firebase 迁移支持的解决方案,但我没有运气.先感谢您!
func configCell(searchDetail: Search) {
self.searchDetail = searchDetail
nameLbl.text = searchDetail.username
let ref = Storage.storage().reference(forURL: searchDetail.userImg)
//Error Below, highlighting 'ref.data' Error: Value of type 'StorageReference' has no member 'data'.
ref.data(withMaxSize: 1000000, completion: { (data, error) in
if error != nil {
print(" we couldnt upload the img")
} else {
if let imgData = data {
if let img = UIImage(data: imgData) {
self.userImage.image = img
}
}
}
})
}
Run Code Online (Sandbox Code Playgroud) 我将我的 Angular2 站点部署到 Firebase 托管,但“dist”文件夹总是在“assets”文件夹中发送整个图像集合,即使它们没有改变。这会占用不必要的带宽,因为此文件夹比所有其他文件的总和还要大。
如何仅部署更改的图像?策略是:
A)配置 Firebase CLI“部署”命令以仅处理更改的图像
和/或
B)将 Angular 生产版本配置为仅打包更改的图像(尽管这仍然需要 Firebase 更新“资产”文件夹,而不是覆盖所有其他未更改的部署图像)
正如我所见,Firebase Storage 不是一个好的替代方案……在页面加载时调用 API 来访问图像只会减慢加载时间……除非这涉及缓存策略?归根结底,该解决方案需要让 CDN 和 CLI 协同工作,以最大限度地减少带宽和加载/部署时间。
firebase firebase-hosting angular-cli firebase-storage angular
这是我第一次尝试使用 Firebase 存储,我正在学习 Firebase 提供的本教程:
https://www.youtube.com/watch?v=SpxHVrpfGgU
我似乎一步一步地遵循了教程,但是,我收到以下错误并且找不到解决方案:
firebase-storage.js:3469 Uncaught Error: No Storage Bucket defined in Firebase Options.
at t.ref (firebase-storage.js:3469)
at HTMLInputElement.<anonymous> (myFile.js:18)
Run Code Online (Sandbox Code Playgroud)
当我点击“t.ref”时,它会引导我到以下内容:
catch(error) {
throw new Error(
'Cannot instantiate firebase-storage.js - ' +
'be sure to load firebase-app.js first.'
)
Run Code Online (Sandbox Code Playgroud)
这是我的 HTML:
<!doctype html>
<html lang="en">
<head>
<title>...</title>
<link rel="stylesheet" type="text/css" href="stylesheets.css" />
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://www.gstatic.com/firebasejs/4.1.5/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "...",
authDomain: "...",
databaseURL: "...", …Run Code Online (Sandbox Code Playgroud) html javascript firebase firebase-realtime-database firebase-storage
尝试显示 firebase 下载进度,出现错误
“FIRStorageRef 类型的值没有成员观察”。
这是我从 firebase 文档中获得并尝试使用的代码。
storage = FIRStorage.storage()
let storageRef = storage.reference().child("Audio").child(successFileName)
self.titleLabel.text = self.successTitlename
SwiftSpinner.show("Loading...")
storageRef.downloadURL { url, error in
if error != nil {
SwiftSpinner.show("Couldn't load Audio...Tap to dismiss").addTapHandler({
SwiftSpinner.hide()
})
**Getting error here**
storageRef.observe(.progress) { snapshot in
// Download reported progress
let percentComplete = 100.0 * Double(snapshot.progress!.completedUnitCount)
/ Double(snapshot.progress!.totalUnitCount)
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,提前致谢。
ios firebase firebase-realtime-database swift3 firebase-storage
我正在尝试将图像上传到 Firebase 存储,我想通过 RxJava2 实现这一目标。这是我的代码..
public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
val result = CropImage.getActivityResult(data)
if (resultCode == Activity.RESULT_OK) {
val resultUri = result.uri
var actualImageFile = File(resultUri.path)
dialogs = SpotsDialog(this, "upload")
imageCompressor = Compressor(this)
var image_bitmap = imageCompressor
?.setMaxWidth(200)
?.setMaxHeight(200)
?.setQuality(75)
?.compressToBitmap(actualImageFile)
profile_image?.setImageBitmap(image_bitmap)
dialogs?.show()
try{
FirebaseStorage.getInstance().reference.child("profile_images").child(FirebaseAuth.getInstance().currentUser?.uid + ".jpg").putFile(resultUri)
.addOnCompleteListener { task: Task<UploadTask.TaskSnapshot> ->
if (task.isSuccessful) {
showMessage("image uploaded")
val baos = ByteArrayOutputStream()
image_bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, baos)
FirebaseStorage.getInstance().reference.child("profile_images").child("thumbs_images").child(FirebaseAuth.getInstance().currentUser?.uid + ".jpg").putBytes(baos.toByteArray())
.addOnCompleteListener { …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 IOS (Swift) 上使用 Firebase 将用户选择的图像文件上传到 firebase 存储。我已经对用户进行了身份验证,所以这不是问题。您可以在下面看到我尝试使用的视图控制器,但是当它尝试上传图像时,我收到一条错误消息:
对象图像/vesVLmkqS2cCLQTJOjv9CFe8mh22/0524729A-855E-4E63-8C11-50F4C4B1A905 不存在。
(可以在代码中看到这条路径的中间部分是用户uid,所以我肯定是有认证用户的)
在测试像“myimage.png”这样的值之前,我试图简化这条路径,但没有帮助,我得到了同样的错误。
我已经尽我所能,请帮助我,因为我在 firebase 文档中找不到任何相关内容。
当视图加载时,下面的代码会自动打开图像选择器。如果用户选择图像,我们将其设置为图像视图。当用户单击上传按钮时,控制器会尝试将文件上传到 Firebase 存储。
import UIKit
import Firebase
class ShareViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var imageView: UIImageView!
let imagePicker = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
imagePicker.allowsEditing = false
imagePicker.sourceType = .photoLibrary
present(imagePicker, animated: true, completion: nil)
}
@IBAction func onPictureTapped(_ sender: Any) {
present(imagePicker, animated: true, completion: nil)
}
@IBAction func onUploadClicked(_ sender: Any) {
if let pickedImage = imageView.image, …Run Code Online (Sandbox Code Playgroud) 当您将文件上传到Firebase的存储中并询问对象URL时,http://firebasestorage.googleapis.com/v0/b/appname/o/filename?alt=media&token=somelongtoken无论您对对象设置了什么权限,都会得到一个可公开访问的URL ,但是令牌使它变得不可猜测。“令牌”一词表明此URL不会永远存在。可以?
该javascript参考的Reference.getDownloadURL说:“获取此对象的一个长寿命的下载网址。” 我不确定“长寿”的含义,并且在文档的其他地方也没有看到任何详细说明。他们的示例都让客户端请求下载URL,然后将其用于临时目的,并且他们没有说是否可以将其存储以备后用。
firebase ×10
firebase-storage ×10
ios ×4
swift ×3
javascript ×2
swift3 ×2
android ×1
angular ×1
angular-cli ×1
html ×1
rx-java ×1
rx-java2 ×1
xcode ×1