【问题标题】:Imgur api ajax : No image data was sent to the apiImgur api ajax:没有图像数据发送到 api
【发布时间】:2017-12-10 23:42:10
【问题描述】:

我正在尝试通过 ajax 将图像上传到 imgur。 我正在使用 base64 编码的图像。 它表明即使我可以在控制台中看到 base64 数据,也没有发送任何数据。

我得到的错误是:-

{"data":{"error":"No image data was sent to the upload api","request":"\/3\/image","method":"POST"},"success":false,"status":400}

应该用空白字符串替换“data/jpeg”或“data/png”??

我的代码:-

$(document).ready(function(){

function upload_to_imgur(img)
{   
      // $('body').text(img) ;
      var data = new FormData() ;
      data.append("image",img) ;

      $.ajax({
        url: "https://api.imgur.com/3/image",
        type: "POST",
        headers: {
          "Authorization": "Client-ID a867bb291ca25d3" ,
        },
        dataType:"json" ,
        contentType : "multipart/form-data;boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
        processData:false,
        data :data,
        success: function(response) {
          var photo = response.data.link;
          $('body').text(photo) ;
        }
      });
}

function base64_image(img)
{
    var reader = new FileReader() ;
    reader.onload = function(e){
        base64data = e.target.result ;
        upload_to_imgur(base64data) ;
    }
    reader.readAsDataURL(img)
}

$('#submit_button').click(function(){

    upload_to_imgur(document.getElementById('p_img_link1').files[0])

    query_string = " \
                INSERT INTO `cm_db_mg`.`products` (`p_list_img`, `p_img_link_1`, `p_img_link_2`, `p_title`, `p_c_s_id`, `p_description`, `p_tags`, `p_listPrice`, `p_mrp`, `p_publishStatus`, `p_publishType`, `p_sem`, `p_s_id`, `p_b_id`, `p_c_id`, `p_u_id_seller`, `p_cat_uniq`, `p_not_listed_cmnt`, `p_disclaimer`, `p_condition`, `p_return_allowed`, `created`, `updated`) \
                VALUES ('', '', 'te', '', NULL, '', '', '', '-1', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', 'First Hand', 'F', '', '');"


}) ;

}) ;

【问题讨论】:

    标签: javascript jquery imgur


    【解决方案1】:
    function upl_im(t) {
        var file = t.files[0];
        var fd = new FormData();
        fd.append("image", file);
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "https://api.imgur.com/3/image.json");
        xhr.onload = function() {
            var link_src=JSON.parse(xhr.responseText).data.link;
            document.getElementById('res').style.backgroundImage = 'url('+link_src+')';
        }
       xhr.setRequestHeader('Authorization', 'Client-ID a867bb291ca25d3');        
        xhr.send(fd);
    }
    

    See

    【讨论】:

    • 谢谢!...但是 image.json 和 image 有什么区别??
    • 该文件处理您的后期请求并返回指向您文件的链接。
    • 好的。我问它是因为根据 imgur 文档,它只是 /image。当我使用 php curl 进行 api 调用时,我只使用 /image(即不使用 /image.json) 就得到了响应。知道它是怎么发生的吗?再次感谢!
    • 这是错误的。请参阅:stackoverflow.com/questions/37979073/…
    【解决方案2】:

    基本上我遇到了同样的问题,但是在使用 PHP 将一些数据上传到 imgur 服务器时我遇到了困难。我能够在我的服务器上看到明显的 POSTed 数据,但 imgur api 也以 no image data was sent to the upload api 响应。

    它适用于独立 curl 和 Fiddler,但不能从我的服务器手动运行。最后的问题是,我手动创建了 POST 标头并将它们手动写入打开的套接字。因此,我没有发送导致 imgur api 无法读取 POST 正文的 Content-Length 标头。

    注意到这一点后,我手动计算了数据大小并发送了Content-Length 标头。这使得 imgur api 为我工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      相关资源
      最近更新 更多