[英]i'm getting an error of "Firebase Storage: Invalid argument count in `put`: Expected between 1 and 2 arguments, received 0
When I click to upload button firebase is giving me below error:当我点击上传按钮 firebase 给我以下错误:
Uncaught FirebaseStorageError {code_: "storage/invalid-argument-count", message_: "Firebase Storage: Invalid argument count in
put
: Expected between 1 and 2 arguments, received 0.", serverResponse_: null, name_: "FirebaseError"}未捕获的 FirebaseStorageError {code_: "storage/invalid-argument-count", message_: "Firebase Storage: Invalid argument count in
put
: Expected between 1 and 2 arguments, received 0.", serverResponse_: null, name_: "FirebaseError"}
function ImageUpload(username) {
const [caption, setCaption] = useState('');
const [image, setImage] = useState(null);
// const [url, setUrl] = useState("");
const [progress, setProgress] = useState(0);
const handleChange = (e) => {
if(e.target.files[0]){
setImage(e.target.files[0]); // setting current image
}
};
const handleUpload = () => {
const uploadTask = firebase.storage().ref(`images/${image.name}`).put();
uploadTask.on(
"state_changed",
(snapshot) => {
// progress bar
const progress = Math.round(
(snapshot.bytesTransferred / snapshot.totalBytes) * 100
);
setProgress(progress);
},
(error) => {
// err function
console.log(error);
alert(error.message);
},
() => {
storage
.ref("images")
.child(image.name)
.getDownloadURL()
.then(url => {
//upload img inside DB
db.collection("posts").add({
timestamp : firebase.firestore.FieldValue.serverTimestamp(),
caption : caption ,
imageUrl : url ,
username : username
});
setProgress(0);
setCaption('');
setImage(null);
});
}
)
}
return (
<div>
<progress value={progress} max="100" />
<input type="text" placeholder='enter a caption...'
onChange={event => setCaption(event.target.value)} value={caption}
/>
<input type="file" onChange={handleChange} />
<Button className="imageUpload__button" onClick={handleUpload}>
Upload
</Button>
</div>
)
}
export default ImageUpload
According to the docs:根据文档:
put
put ( data: Blob | Uint8Array | ArrayBuffer, metadata? : UploadMetadata ): UploadTask Uploads data to this reference's location.
put ( data: Blob | Uint8Array | ArrayBuffer, metadata? : UploadMetadata ): UploadTask 上传数据到这个引用的位置。
Parameters data: Blob |
参数数据:Blob | Uint8Array |
Uint8Array | ArrayBuffer The data to upload.
ArrayBuffer 要上传的数据。
Optional metadata: UploadMetadata Metadata for the newly uploaded object.
可选元数据:UploadMetadata 新上传的 object 的元数据。
Returns UploadTask
返回上传任务
For example:例如:
var file = ... // use the Blob or File API
ref.put(file).then(function(snapshot) {
console.log('Uploaded a blob or file!');
});
https://firebase.google.com/docs/storage/web/upload-files https://firebase.google.com/docs/storage/web/upload-files
https://firebase.google.com/docs/reference/js/firebase.storage.Reference#put https://firebase.google.com/docs/reference/js/firebase.storage.Reference#put
Therefore inside the put()
method that you are using you need to either use a File
or Blob
因此,在您使用的
put()
方法中,您需要使用File
或Blob
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.