yammer 附件

Yammer attachement

我正尝试通过我的应用程序 post 发送带有附件图片的消息,所以我使用了此代码:

function yamPost(mytoken) {
        var msg_Body = jQuery("#myBody").val();
        var imgData = new FormData();

        var files = $("#attachement").get(0).files;

        if (files.length > 0) {
            imgData.append("attachement1", files[0]);
        }

        yam.platform.request(
        {
            url: "messages.json",
            method: "POST",
            network: "myNetwork",
            header:{
                authorization: "Bearer " + mytoken,
            },
            data: {
                body: msg_Body,
                attachment1: imgData
            },
            contentType: "multipart/form-data",

            success: function (feedResult) {
                console.log("- Yeaaahhh");
                console.log(feedResult);
                debugger;
            },
            error: function (msg) {
                console.log("- Can't post message with attachement");
                debugger;
            }
        });
    }

我得到错误:

"Uncaught TypeError: Illegal invocation"

我也尝试使用 pending_attachment 但我遇到了同样的问题或 http500 内部服务器错误... 任何人都可以 post 他如何做的示例代码。

编辑

我尝试了一种发送数据的新方法:

我没有发送 FormData,而是使用了这个:

function readBinary() {
        var reader = new FileReader();

        reader.onloadend = function () {
            yamPost(reader.result, token);
        }

        reader.readAsBinaryString(document.getElementById("attachement").files[0]);
    }

每次我这样做都会遇到这个异常:

"No 'Access-Control-Allow-Origin'"

但是,如果我不包含附件(attachment1:imgData 或 binaryFileOutput),则消息是 posted !

终于找到答案了, 事实上,使用 FormData 对象是正确的做法,但我以错误的方式使用它,你必须将要发送的所有属性附加到同一个 FormData 对象上,就像这样 thread,这里是魔术代码:

function YamPostImage() {
var myData = new FormData();

myData.append('body', "my app images");
myData.append('attachment1', document.getElementById("attachement").files[0]);

yam.platform.request(
{
    url: "messages.json",
    method: "POST",
    network: "my-network",
    data: myData,
    cache: false,
    contentType: false,
    processData: false,
    success: function (feedResult) {
        console.log("- Yeaaahhh");
        debugger;
    },
    error: function (msg) {
        console.log("- Can't post message with attachement");
        debugger;
    }
});

}