javascript - imgur 图片上传不适用于 base64 数据?

标签 javascript base64 imgur

我已经尝试了 3 个多小时让 imgur 接受 base 64 数据完全无济于事,我已经确认数据是正确的,我已经确认我可以使用 url 图片发送到 imgur,我就是无法让它工作。我使用的代码如下:

$(document).ready(function(){
            function readImage(input) {
                var FR= new FileReader();
                FR.onload = function(e) {
                    console.log(e.target.result);
                    $.ajax({
                                url: 'https://api.imgur.com/3/image',
                                type: 'post',
                                headers: {
                                    Authorization: 'Client-ID 40dbfe0cfea73a7'
                                },
                                data: {
                                    image: e.target.result
                                },
                                dataType: 'json',
                                success: function(json) {
                                    console.log(json);
                                },
                                error: function(json) {
                                    console.log(json);
                                }
                            });
                };       
                FR.readAsDataURL( input );
            }
    });

输入是我从 dropzone.js 获取的表单输入,base64 数据的示例是:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANgAAADYCAIAAAAGQrq6AAAABnRSTlMA/gABAP1bbA07AAAD+klEQVR4nO3dMW4sNxBAQa3h+19ZDhwzoNE0H/dXpRJGo90HBg3O8PP7+/sDt/11+wbg50eIRAiRBCGSIEQShEiCEEn4e/WDz+fzf97Hf7aag9buf3deu7r/V/7fldX9WxFJECIJQiRBiCQIkQQhkiBEEpZzxJVb+xd352Sv3Odpr3wOVkQShEiCEEkQIglCJEGIJAiRhO054srU/Gxq7nV67rh7/dp8sfZ9WRFJECIJQiRBiCQIkQQhkiBEEsbmiDWnn/+dur73U/7LikiCEEkQIglCJEGIJAiRBCGS8LVzxF277yN8/e/WWBFJECIJQiRBiCQIkQQhkiBEEsbmiLW519Q5Jbee/z09X6x9X1ZEEoRIghBJECIJQiRBiCQIkYTtOWLtPX+n7c4dp35/yivflxWRBCGSIEQShEiCEEkQIglCJOFT25d2y+k5X+1ckxorIglCJEGIJAiRBCGSIEQShEjCcj9ibb/d1PklU+csn36+eGruOHX/p3uwIpIgRBKESIIQSRAiCUIkQYgkLOeItedta+81rM3npty6HysiCUIkQYgkCJEEIZIgRBKESMLxc1ZunXdy+n523br+yul9mbvXtyKSIEQShEiCEEkQIglCJEGIJGy/H/H0PryVV/b53Zpfnn5+/PT+VCsiCUIkQYgkCJEEIZIgRBKESMK1c1Zemaut1Oapr38+VkQShEiCEEkQIglCJEGIJAiRhLHnmm+dR7JSm6tNOf1+xF3ej8hXESIJQiRBiCQIkQQhkiBEErbPa145fT7y7t+dev9i7bzp3eu/sj/SikiCEEkQIglCJEGIJAiRBCGSMHZe89RzyqfnXiu3zkd+5VzmXbvXsSKSIEQShEiCEEkQIglCJEGIJBzfj7j7+6+fL/Ktzx3vXt8ckScJkQQhkiBEEoRIghBJECIJY/sRp9x6jvi0W/v8VqaeN5/ab2pFJEGIJAiRBCGSIEQShEiCEEkY2494y+l9kLvzsFfOvz59nV1WRBKESIIQSRAiCUIkQYgkCJGE7fOaa3Oyldo50affg/jK/7tiRSRBiCQIkQQhkiBEEoRIghBJ2J4jrtTmYSunz48+rfa+Q88181WESIIQSRAiCUIkQYgkCJGEsTnitzp93vSt82ZOz1PtR+RJQiRBiCQIkQQhkiBEEoRIwtfOEW+9529q3nb6OeiVqXmk/Yg8SYgkCJEEIZIgRBKESIIQSRibI956b+LKrXONp+Z/p89NmTL1OVsRSRAiCUIkQYgkCJEEIZIgRBK254i19wWuTJ13UnteePc6t85NsR+RJwmRBCGSIEQShEiCEEkQIgmf2j5C/kxWRBKESIIQSRAiCUIkQYgkCJGEfwDA94Tqvnz2uQAAAABJRU5ErkJggg==

我收到一个 400 错误,这意味着(根据 A 的 docs)我遗漏了一个参数,或者使用了一个无效值。或 B) 图像已损坏或格式无效。 这对我来说毫无意义,因为将该 base64 数据复制到浏览器中工作正常,授权工作正常,而且我知道如果图像是 url,我可以上传。所以我不确定这里发生了什么!如果您需要更多数据,请告诉我,我会尽快更新这个问题!非常感谢你们!

最佳答案

您必须将 data:image/png;base64, 替换为空字符串,如下所示:

return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");

Demo in JSFiddle

另请参阅:Save base64-encoded image with AJAX request in PHP

关于javascript - imgur 图片上传不适用于 base64 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20512887/

相关文章:

c# - 通过 Web 套接字快速发送 Base64 字符串?

javascript - 如何将 font-awesome svg 图标导出为 base64 url​​?

javascript - nodejs imgur api - 超过容量 500 错误

javascript - Bootstrap datetimepicker - 覆盖点击日历图标事件

javascript - 在回调中返回函数(事件,用户数据)?

c# - 通过表单 POST 发送 Base64 数据图像

c# - 使用c#将图像上传到imgur

javascript - 为什么 $ ('.classname' ) & document.getElementsByClassName ('classname' ) 返回不同的东西?

javascript - 如何使用 jquery ajax 同时更新两个 div?

javascript - 我可以在 chrome 扩展中为 oauth2 回调设置什么重定向 URL?