kinvey rest api上传

时间:2016-02-09 07:03:07

标签: api rest kinvey

我正在尝试使用REST API方法上传Kinvey。

我向https://baas.kinvey.com/blob/:myAppId发送“POST”请求后,我可以成功获取所提供的Google存储空间网址链接

问题是当我向Google存储网址发送'PUT'请求时,我收到此错误:

  

无法加载XMLHttpRequest(我的storage.google网址)。回应   预检请求未通过访问控制检查:否   请求中存在“Access-Control-Allow-Origin”标头   资源。因此,不允许Origin(我的localhost)访问。

1 个答案:

答案 0 :(得分:1)

这似乎是一个相当标准的CORS错误(你可以在这里阅读更多关于这里的内容:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS),这是在你进行跨源请求时发生的。您可以通过许多不同的方式来解决此问题,但最简单的方法可能是使用我们的SDK来帮助您。如果您查看http://devcenter.kinvey.com/html5/downloads,您会在顶部导航中找到可以包含在项目和指南/文档中的SDK。

使用HTML5库进行文件上传也相当简单。这是我提出的一些示例代码:

HTML部分:

<input type="file" name="_file" id="_file" onchange="fileSelected();" />
        <div id="fileinfo">
            <div id="filename"></div>
            <div id="filetype"></div>
        </div>

Javascript部分:

function fileSelected(){
    var oFile = document.getElementById('_file').files[0];
    var oReader = new FileReader();
    oReader.onload = function(e) {
        document.getElementById('fileinfo').style.display = 'block';
        document.getElementById('filename').innerHTML = 'Name: ' + oFile.name;
        document.getElementById('filetype').innerHTML = 'Type: ' + oFile.type;
    };
    oReader.readAsDataURL(oFile);
    fileUpload(oFile);
}


function fileUpload(file) {
    var file = document.getElementById('_file').files[0];
    var promise = Kinvey.File.upload(file,{
        filename: document.getElementById('fileinfo').toString(),
        mimetype: document.getElementById('filetype').toString()
    })
    promise.then(function() {
        alert("File Uploaded Successfully");
    }, function(error){
        alert("File Upload Failure:  " +  error.description);
    });
}

对于Kinvey的每个Javascript库,这略有不同,但应遵循大致相同的大纲。获取文件,异步调用Kinvey.File.Upload,让SDK实现它的魔力。这应该为你处理CORS的所有丑陋。

谢谢,