2017-01-10 24 views
0

Я пытаюсь загрузить звуковой файл из сервиса $ cordovaCapture от ngCordova в UploadCare. Файл uploadcare.fileFrom ('object') не работает с ошибкой aupload. У меня есть набор открытых ключей. Я могу загрузить файл, отправив его и пометив и получив доступ к файлам document.getElementById ('fileTag'). [0].uploadcare fileFrom ngCordova MediaFile

$cordovaCapture.captureAudio() 
        .then(function (audioData) { 

         return uploadcare.fileFrom('object', audioData[0]) 
          .done(function (fileInfo) { 
           console.log(fileInfo); 

          }).fail(function (err) { 
           console.log(err); 

          }) 
        }) 

аудиоданных [0] объект выглядит следующим образом

MediaFile { 
    end:0 
    fullPath:"file:/storage/emulated/0/Sounds/Voice%20002.m4a" 
    lastModified:null 
    lastModifiedDate:1481324751000 
    localURL:"cdvfile://localhost/sdcard/Sounds/Voice%20002.m4a" 
    name:"Voice 002.m4a" 
    size:49227 
    start:0 
    type:"audio/mpeg" 
} __proto__:File 

Я думал, что проблема может быть, что объект является MediaFile, а не файл, но я мог бы использовать некоторую помощь произнесения один к другому ,

FileEntry 
    filesystem:FileSystem 
    fullPath:"/Sounds/Voice 002.m4a" 
    isDirectory:false 
    isFile:true 
    name:"Voice 002.m4a" 
    nativeURL:"file:///storage/emulated/0/Sounds/Voice%20002.m4a" 
    __proto__:Entry 


File 
    end:49227 
    lastModified:1481324751000 
    lastModifiedDate:1481324751000 
    localURL:"cdvfile://localhost/sdcard/Sounds/Voice%20002.m4a" 
    name:"Voice 002.m4a" 
    size:49227 
    start:0 
    type:"audio/mpeg" 
    __proto__:Object 

использованием window.resolveLocalFileSystemUrl() вы в конечном итоге с выше FileEntry объекта, которые дают вышеописанный файл, объект, но uploadcare все еще терпит неудачу с «загрузить» ошибка.

ответ

0

uploadcare.fileFo загружает файл из собственного файлового объекта. Попробуйте это:

window.resolveLocalFileSystemURL(audioData[0].localURL,function(fileEntry){ 
fileEntry.file(function(file) { 
    uploadcare.fileFrom('object', file); 
    ... 
    }); 
}); 
1

Использование ngCordova $ cordovaFileTransfer(), вы можете отправить аудио-файлы в uploadcare.

 var fileName = filePath.split('/').pop(); 
     var uploadcareOptions = { 
      fileKey: "file", 
      fileName: fileName, 
      chunkedMode: false, 
      mimeType: 'audio/mp4', 
      params: { 
       "UPLOADCARE_PUB_KEY": "upload-care-public-key", 
       "UPLOADCARE_STORE": 'auto', 
       fileName: fileName 
      } 
     }; 
return $cordovaFileTransfer.upload('https://upload.uploadcare.com/base/', filePath, uploadcareOptions) 

Важная часть заключается в том, чтобы указать тип mime при отправке файлов, поскольку uploadcare предположит, что это изображение в противном случае.