2017-02-23 14 views
1

Мы получили файл, он находится в кэше, и я вижу в консоли Но когда я пытался спасти его и отправить, я получил эту ошибку из cordova.jsОшибки из cordova.js после получения файла из камеры

Неверный тип параметра «newName» в Entry.copyTo: ожидаемая строка, но получился номер.

Uncaught TypeError: Неверный тип для параметра «newName» of Entry.copyTo: Ожидаемая строка, но получен Number.

Ошибка в успешном обращении callbackId: File1917405046: TypeError: Неверный тип для параметра «newName» в Entry.copyTo: ожидаемая строка, но получил номер. установлен

ngCordova и впрыскивается Кордова обновляется и я не могу отправить мой файл, пожалуйста, помогите мне
вот мой код в контроллере


$scope.attachPhoto = function() { 
     $ionicActionSheet.show({ 
      buttons: [ 
       { text: '<i class="icon ion-android-image"></i>Перейти в галерею' }, 
       { text: '<i class="icon ion-android-camera"></i> Сделать фото' } 
      ], 
      cancelText: 'Cancel', 
      cancel: function() { 

      }, 
      buttonClicked: function(index) { 
       var options = { 
        destinationType : Camera.DestinationType.FILE_URI, 
        sourceType : Camera.PictureSourceType.CAMERA, 
        allowEdit : false, 
        encodingType: Camera.EncodingType.JPEG, 
        popoverOptions: CameraPopoverOptions 
       }; 

       $cordovaCamera.getPicture(options).then(function(imageData) { 
        onImageSuccess(imageData); 
        console.log(imageData); 

        function onImageSuccess(fileURI) { 
         createFileEntry(fileURI); 
         console.log(fileURI); 
        } 
        function createFileEntry(fileURI) { 
         window.resolveLocalFileSystemURL(fileURI, copyFile, fail); 
         console.log(fileURI); 
        } 
        function copyFile(fileEntry) { 
         fileEntry.file(function(file) { 
          var reader = new FileReader(); 

          reader.onloadend = function(e) { 
           var imgBlob = new Blob([ this.result ], { type: "image/jpeg" }); 
           $scope.attach = true; 
           $scope.file = imgBlob; 
          }; 
          reader.readAsArrayBuffer(file); 
         }); 
         window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(fileSystem2) { 
          fileEntry.copyTo(
           fileSystem2, 
           12345, 
           onCopySuccess, 
           fail 
          ); 
         }, fail); 
        } 
        function onCopySuccess(entry) { 
         $scope.$apply(function() { 
          $scope.images.push(entry.nativeURL); 
          $scope.attach = true; 
          $scope.sendPhoto(); 
         }); 
        } 
        function fail(error) { 
         console.log("fail: " + error.code); 
        } 
       }, function(err) { 
        console.log(err); 
       }); 
       console.log(options); 
       return true; 
      } 
     }) 
    }; 


    $scope.sendPhoto = function() { 

     var data = { 
      file: $scope.file 
     } 
     console.log(data); 
     var fd = new FormData(data); 

     xhr = new XMLHttpRequest(); 
     xhr.open("POST", "http://eatmeet.ru/serv.php"); 
     xhr.setRequestHeader('Content-Type', 'application/upload'); 
     xhr.send(fd); 

    } 
+0

пожалуйста, дайте какой-то знак обратной связи. – lin

ответ

0

Попытка разобрать string как fileName, а не number. Пожалуйста, проверьте file documentation.

Правильный синтаксис: fileEntry.copyTo(parent [DirectoryEntry], newName [DOMString], successCallback [Function], errorCallback [Function]);

window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(fileSystem2) { 
    fileEntry.copyTo(
     fileSystem2, 
     "12345", 
     onCopySuccess, 
     fail 
    ); 
}, fail); 
+0

большое спасибо, этот код мне помог, и файл подходит к серверу, но у меня есть новая ошибка – markprog

+0

@markprog рада помочь вам. Вы можете отметить этот ответ как правильный? (галочка рядом с кнопками голосования) – lin

Смежные вопросы