kinvey rest api upload

会有一股神秘感。 提交于 2019-12-11 11:41:35

问题


I'm trying to upload on Kinvey using REST API method.

I can successfully get the google storage URL link provided after sending a 'POST' request to https://baas.kinvey.com/blob/:myAppId

The problem is when I'm sending a 'PUT' request to the google storage URL, I'm getting this error:

XMLHttpRequest cannot load (my storage.google URL). Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin (my localhost) is therefore not allowed access.


回答1:


This appears to be a fairly standard CORS error (which you can read a LOT more about over here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS ) , which takes place when you are making a cross-origin request. There's a lot of different ways that you can approach this issue, but the easiest would probably be to use one of our SDK's to help you. If you take a look over at http://devcenter.kinvey.com/html5/downloads you will find an SDK that you can include in your projects and guides / documentation for it in the top navigation.

File uploads using the HTML5 library are fairly trivial as well. Here's some sample code that I have whipped up:

HTML portion:

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

Javascript portion:

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);
    });
}

This will be slightly different for each of Kinvey's Javascript libraries, but should follow roughly the same outline. Get file, call Kinvey.File.Upload asynchronously, and let the SDK do it's magic. This should handle all the ugliness of CORS for you.

Thanks,



来源:https://stackoverflow.com/questions/35285825/kinvey-rest-api-upload

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!