Firebase, как удалить изображение из хранилища при отключении? - PullRequest
0 голосов
/ 14 мая 2018

Привет. Я пытаюсь удалить загруженное изображение, когда соединение было разорвано.

В приведенном ниже коде я пытаюсь удалить изображение из хранилища во время отключения. Тем не менее, "storageRef.delete ();" происходит, даже если соединение все еще активно.

    var connectedRef = database.ref(".info/connected");
    var connectionsImgRef = database.ref("/imageConnections");
    
    var imgCon = "";
    connectedRef.on("value", function (snap) {
        if (snap.val()) {
            $("#submitImage").on("click", function () {
                event.preventDefault();

                var fileName = selectedFile.name;
                storageRef = firebase.storage().ref("images/" + fileName);
                
                var uploadTask = storageRef.put(selectedFile);
                uploadTask.on('state_changed', function (snapshot) {
                    var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
                    console.log('Upload is ' + progress + '% done');
                    switch (snapshot.state) {
                        case firebase.storage.TaskState.PAUSED: // or 'paused'
                            console.log('Upload is paused');
                            break;
                        case firebase.storage.TaskState.RUNNING: // or 'running'
                            console.log('Upload is running');
                            break;
                    }
                }, function (error) {
                
                }, function () {
               uploadTask.snapshot.ref.getDownloadURL().then(function (downloadURL) {
                        console.log('File available at', downloadURL);

                        userImgURL = downloadURL;

                        imgCon = connectionsImgRef.push(userImgURL);

                        userDisplayImg.attr("src", downloadURL);
                        userDisplayImg.addClass("userImage")
                        $("#uploadedImg").html(userDisplayImg);

                        //Issue: the remove is initiated even before disconnect.
                        imgCon.onDisconnect().remove(() => {
                            console.log("call back initiated")
                            storageRef.delete();
                        });
                        
                        //Issue: the remove is initiated even before disconnect.
                        // imgCon.onDisconnect().remove(function () {
                        //     storageRef.delete();
                        // });
                    })

                });
            });
        };
    });
             
<!-- Note this is using bootstrap's classes. -->

<input type="file" class="custom-file-input upload-group" id="file">
<label class="custom-file-label" for="validatedCustomFile">Upload an image!</label>

<button id="submitImage" class="btn btn-light">Upload</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...