2017-06-08 7 views
1

imgurに画像をアップロードしようとしています。 base64でエンコードされた画像を使用しています。 コンソールにbase64データが表示されているにもかかわらずデータが送信されていないことが示されています。Imgur api ajax:画像データがapiに送信されていません

私が手にエラーがある: -

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

空の文字列と、 "データ/ JPEG" または "データ/ 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', '', '');" 


}) ; 

})。

答えて

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

+0

ありがとうございます。でも、image.jsonとimageの違いは何ですか? –

+0

そのファイルはあなたのポストリクエストを処理し、あなたのファイルへのリンクを返します。 –

+0

私はそれを尋ねました。なぜなら、imgur docsそれは単なる/ imageだからです。 そして、私がphp curlを使ってapi呼び出しを行うと、/ image.jsonを使わずに/image(i.e)を使うだけで応答が得られます。 どのようなことが起こったのでしょうか?もう一度ありがとう! –

0

基本的に私は同じ問題を抱えていたが、imgurサーバーにいくつかのデータをアップロードするPHPを使用したとき、私は苦労。サーバー上で明らかにPOSTのデータを確認できましたが、imgur apiもno image data was sent to the upload apiと回答しました。

これはスタンドアロンのカールとFiddlerから機能しましたが、私のサーバーから手動では機能しませんでした。最後に問題は、手動でPOSTヘッダーを作成し、手動で開いたソケットに書き込むことでした。このため、私はContent-Lengthヘッダーを送信しなかったため、imgur APIにはPOSTという本文が読み取られませんでした。

私はこれに気がついた後、手動でデータサイズを計算し、Content-Lengthヘッダーを送信しました。これでimgur apiが私のために働いていました。

関連する問題