【问题标题】:kinvey rest api uploadkinvey rest api 上传
【发布时间】:2016-02-09 07:03:06
【问题描述】:

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

https://baas.kinvey.com/blob/:myAppId发送“POST”请求后,我可以成功获取提供的谷歌存储URL链接

问题是当我向谷歌存储 URL 发送“PUT”请求时,我收到了这个错误:

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

【问题讨论】:

    标签: api rest kinvey


    【解决方案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。

    谢谢,

    【讨论】:

    • 哇,谢谢,它成功了!但是我遇到了一个错误,虽然我不知道它是否会影响我的项目流程:Response Content-Type header is set to text/html; charset=UTF-8. Expected it to be set to application/json.
    • Jestoni,您能否将此作为一个新问题打开并在评论中联系我,因为这可能完全不同?谢谢,
    • 这是我的新帖子:link@damien-kinvey
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多