Caricamento di un file tramite API di Yammer

Posso submit un messaggio, ma quando aggiungo l'allegato o l'attaccamento in attesa, ho un errore che dice:

TypeError: 'stepUp' ha richiamato un object che non implementa l'interface HTMLInputElement.

function post() { yam.getLoginStatus( function(response) { if (response.authResponse) { yam.request( { url: "https://api.yammer.com/api/v1/messages.json" //note: the endpoint is api.yammer... , method: "POST" , data: { "body" : document.getElementById("post_body").value, "group_id" : document.getElementById("group_id").value ,"attachment1" : document.getElementById("attachment") } , success: function (msg) { alert("Post was Successful!: " + msg.messages[0].id); //id of new message } , error: function (msg) { alert("Post was Unsuccessful..." + msg); } } ); } else { yam.login( function (response) { //nothing }); } }); } 

JavaScript javascript SDK non funziona con l'allegato. (alless un esempio di lavoro non è stato visto in Internet) Per caricare un allegato, puoi caricare il file sul tuo server e quindi utilizzare og_url per submit un collegamento a quel file sul tuo server oppure preparare il tuo file di formattazione ajax . ecco un esempio:

  var data = new FormData(); data.append('body', document.getElementById("post_body").value); data.append('group_id', document.getElementById("group_id").value); data.append('attachment1', document.getElementById("attachment"), 'filename_of_your_choice'); $.ajax({ url: "https://api.yammer.com/api/v1/messages.json", data: data, beforeSend: function (xhr) { // set authorization header xhr.setRequestHeader("Authorization", "Bearer YOUR_AUTHORIZATION_TOKEN"); }, cache: false, contentType: false, processData: false, type: 'POST', success: function (data) { console.log("ajax post success."); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("There was an error with the request."); } }); 

Notare che il token di authorization è ottenuto nella risposta ad un login efficace. Non è l'ID dell'app. Inoltre, dubito che document.getElementById ("allegato") functionrà. È necessario convertire tale object in un blob di arrays di byte.

Per me funziona:

 function postAttach() { var msg = $('#attach_body').val(); var m_data = new FormData(); m_data.append('body', msg); m_data.append('group_id', 6194208); m_data.append('attachment1', $('input[name=attachment1]')[0].files[0]); yam.platform.request({ url: "messages.json", contentType: "multipart/form-data", data: m_data, processData: false, contentType: false, type: 'POST', dataType: 'json', success: function (user) { alert("The request was successful."); }, error: function (user) {console.log(user); alert("There was an error with the request."); } }); } 
  <div name="postYammer"> <input type="text" name="body" value="" id="attach_body" /> <input type="file" name="attachment1" id="attach_img"/> <button onclick="postAttach()" type="button">Post</button> </div>