首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传fileFrom ngCordova MediaFile

上传fileFrom ngCordova MediaFile
EN

Stack Overflow用户
提问于 2017-01-10 00:05:01
回答 2查看 83关注 0票数 0

我正在尝试从ngCordova的$cordovaCapture服务上传一个声音文件到UploadCare。uploadcare.fileFrom('object')由于“上传”错误而不断失败。我有公钥。我能够上传文件通过发送和标签访问document.getElementById('fileTag').files。

代码语言:javascript
复制
$cordovaCapture.captureAudio()
                    .then(function (audioData) {

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

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

                            })
                    })

audioData对象如下所示

代码语言:javascript
复制
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而不是一个文件,但是我需要一些帮助将其中一个转换到另一个。

代码语言:javascript
复制
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对象,该对象提供了上面的文件对象,但是上传仍然失败,出现了“上传”错误。

EN

回答 2

Stack Overflow用户

发布于 2017-01-28 00:59:28

使用ngCordova $cordovaFileTransfer(),您可以将音频文件发送到上载。

代码语言:javascript
复制
        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类型,否则将假设它是图像。

票数 1
EN

Stack Overflow用户

发布于 2017-01-10 20:19:44

uploadcare.fileFrom从本机文件对象上传文件。试试这个:

代码语言:javascript
复制
window.resolveLocalFileSystemURL(audioData[0].localURL,function(fileEntry){
fileEntry.file(function(file) {
    uploadcare.fileFrom('object', file);
    ...
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41559091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档