Хранилище Firebase не может перемещать/загружать файл при изменении его имени, react js, redux

# #reactjs #firebase

Вопрос:

Я пытаюсь повторно загрузить/переместить файл уже существовал в огневой базы хранения к другому пути в ту же огневую базу хранения различных папок и изменение его имя через «возвращение» -действия, поэтому файл становится загружен, но повреждены => это означает, когда я пытаюсь открыть его, он открывается без каких-либо данных/изображения и размер изображения 9B кодекса:

 // upload the same file with new path and remove the old file
  let uploadAndDeletePromises = fileArr.map(
                                (fileData, index) =>
                                    storageRef
                                 // newpaths=folderName/FolderWithIdName/fileName__docId.png
                                        .child(newFilesPaths[index])
                                        .put(
                                            // filesToUpload data showed in the pictures below
                                            filesToUpload[index],
                                            // metadata={customMetadata: 
                                            // {uplaoderId:"",PrId:""}
                                            metadata[index]
                                        )
                                        .then(() =>
                                       //remove old path
                                            storageRef
                            // fileData.path -> the old path 
                            // FolderName/folderWithIdName/fileName.png
                                                .child(fileData.path)
                                                .delete()
                                        )
                            );
                            return Promise.all(uploadAndDeletePromises);
 

результат filesToUpload от оригинального, который хорошо работает, это когда я загружаю его в первый раз:

объект для исходного файла

результат filesToUpload от того, который я хочу повторно загрузить из хранилища firebase на другой путь в хранилище firestore, это когда я пытаюсь повторно загрузить по другому пути:

введите описание изображения здесь

Любой, у кого есть опыт обработки/перемещения файла с пути на другой и изменения его имени, использует действия react js, хранилище firebase, а не node js.

Ответ №1:

Функции для перемещения файла находятся в библиотеках на стороне сервера. Если вы хотите переместить файл в клиенте, вам придется выполнить следующие действия:

1. Загрузите файл

2. Загрузите файл в новое место

3. Удалите предыдущий файл (если требуется).

Похоже, у вас есть идея о том, как загрузить новый файл и удалить предыдущий, но у вас возникли проблемы с загрузкой предыдущего файла (именно поэтому загружается файл 9B).

Согласно документации, вы должны загрузить файл следующим образом

 storageRef.child('path/to/file').getDownloadURL()
  .then((url) => {
    // `url` is the download URL for the file

    // This can be downloaded directly:
    var xhr = new XMLHttpRequest();
    xhr.responseType = 'blob';
    xhr.onload = (event) => {
      var blob = xhr.response;
    // insert upload and delete code here
    };
    xhr.open('GET', url);
    xhr.send();
  })
  .catch((error) => {
    // Handle any errors
  });