我正在尝试从ngCordova的$cordovaCapture服务上传一个声音文件到UploadCare。uploadcare.fileFrom('object')由于“上传”错误而不断失败。我有公钥。我能够上传文件通过发送和标签访问document.getElementById('fileTag').files。
$cordovaCapture.captureAudio()
.then(function (audioData) {
return uploadcare.fileFrom('object', audioData[0])
.done(function (fileInfo) {
console.log(fileInfo);
}).fail(function (err) {
console.log(err);
})
})audioData对象如下所示
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对象,该对象提供了上面的文件对象,但是上传仍然失败,出现了“上传”错误。
发布于 2017-01-28 00:59:28
使用ngCordova $cordovaFileTransfer(),您可以将音频文件发送到上载。
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类型,否则将假设它是图像。
发布于 2017-01-10 20:19:44
uploadcare.fileFrom从本机文件对象上传文件。试试这个:
window.resolveLocalFileSystemURL(audioData[0].localURL,function(fileEntry){
fileEntry.file(function(file) {
uploadcare.fileFrom('object', file);
...
});
});https://stackoverflow.com/questions/41559091
复制相似问题