我正在构建一个 gmail 附加应用程序来阅读当前电子邮件并检索与电子邮件关联的 gmail 附件。获得附件的 blob 后,我尝试通过multipart/form-data发布请求将其上传到我的 API。目前,我的请求以 500 失败,而我的邮递员请求工作正常。
我的后端给出了以下异常: 调用目标引发了异常。在 HttpRequest.GetBufferedInputStream 的调用者填充内部存储之前访问了 BinaryRead、Form、Files 或 InputStream。
与邮递员一起,我没有收到任何错误。
不确定我当前是否在应用脚本中创建请求。这是我的代码。
var blob =
Utilities.newBlob(parsedBlob,payload.contentType,payload.name);
Logger.log('encode url ' + encodedUrl)
var metadata = {
'account_ref.id': payload.metaData.account_ref.id,
'matter_ref.id': payload.metaData.matter_ref.id,
description: "uploaded from gmail add on.",
content_type: payload.contentType,
file_name: 'test.png',
size: JSON.parse(payload.size).toString(),
};
for (var i in metadata) {
data += "--" + boundary + "\r\n";
data += "Content-Disposition: form-data; name=\"" + i + "\"
\r\n\r\n" + metadata[i] + "\r\n";
}
data += "--" + boundary + "\r\n";
data += "Content-Disposition: form-data; name=\"\"; filename=\"" +
blob.getName() + "\"\r\n";
data += "Content-Type:" + blob.getContentType() + "\r\n\r\n";
var payload = Utilities.newBlob(data).getBytes()
.concat(blob.getBytes())
.concat(Utilities.newBlob("\r\n--" + boundary + "--\r\n").getBytes());
var headers = {
Authorization: Utilities.formatString("Bearer %s", this.oauthService.getAccessToken())
};
var options = {
method: "post",
contentLength: blob.getBytes().length,
payload: payload,
contentType : "multipart/form-data;charset=utf-8; boundary=--" +
boundary,
muteHttpExceptions: true,
headers: headers,
};
我在准备有效载荷时做错了什么?