How to upload base64 encoded image data to S3 using JavaScript only?

前端 未结 4 1786
花落未央
花落未央 2021-01-30 18:43

I have a rails app on Heroku (cedar env). It has a page where I render the canvas data into an image using toDataURL() method. I\'m trying to upload the returned ba

4条回答
  •  猫巷女王i
    2021-01-30 19:27

    I have found a way to do this. After a lot of searching a looking at different tutorials.

    You have to convert the Data URI to a blob and then upload that file to S3 using CORS, if you are working with multiple files I have separate XHR requests for each.

    I found this function which turns your the Data URI into a blob which can then be uploaded to S3 directly using CORS (Convert Data URI to Blob )

    function dataURItoBlob(dataURI) {
        var binary = atob(dataURI.split(',')[1]);
        var array = [];
        for(var i = 0; i < binary.length; i++) {
            array.push(binary.charCodeAt(i));
        }
        return new Blob([new Uint8Array(array)], {type: 'image/jpeg'});
    }
    

    Here is a great tutorial on uploading directly to S3, you will need to customise the code to allow for the blob instead of files.

提交回复
热议问题