我正在尝试通过我的应用程序发布带有附件图像的邮件,因此我使用了以下代码:
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;
}
});
}
我收到了错误:
“未捕获的TypeError:非法调用”
我也尝试使用pending_attachment
,但我遇到了同样的问题或http500内部服务器错误...
任何人都可以发一个他如何做的示例代码。
我尝试了一种发送数据的新方法:
而不是发送FormData我使用了这个:
function readBinary() {
var reader = new FileReader();
reader.onloadend = function () {
yamPost(reader.result, token);
}
reader.readAsBinaryString(document.getElementById("attachement").files[0]);
}
每次我这样做都会遇到这个例外:
“没有'Access-Control-Allow-Origin'”
但是,如果我不包含附件( attachment1:imgData或binaryFileOutput ),则会发布消息!
答案 0 :(得分:2)
我终于找到了答案, 事实上,使用FormData对象是正确的做法,但是我在worng方式上使用它,你必须在同一个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;
}
});
}