立即服务中的帖子附件

时间:2018-06-07 14:18:06

标签: rest servicenow

我陷入了如何使这项工作陷入困境的困境。 在Postman中,我可以毫无问题地上传附件。 我正在上传一个简单的文本文件。 来自postmanshows的代码:

var form = new FormData();
form.append("uploadFile", "C:\\temp\\test.txt");

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://xxxxxxx.service-now.com/api/now/attachment/file?table_name=problem&table_sys_id=oiui5346jh356kj3h634j6hk&file_name=Toast",
  "method": "POST",
  "headers": {
    "Accept": "application/json",
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==",
    "Cache-Control": "no-cache",
    "Postman-Token": "39043b7f-8b2c-1dbc-6a52-10abd25e91c1"
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": form
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

当我在.asp页面上使用它时,我收到400错误,并且控制台发出响应: “无法创建附件。请求中可能缺少文件部分。” 如何正确地将要附加到代码中的文件。我认为硬编码会有效。如何获取代码在本地用户pc上查找文件。一旦我开始工作,我最终想要一个文件输入按钮来选择文件。

谢谢, 斯科特

1 个答案:

答案 0 :(得分:0)

您的代码看起来很好,除了这一行:

form.append("uploadFile", "C:\\temp\\test.txt");

将文件名作为第二个参数传递不起作用,根据FormData.append here的文档,您需要传递一些blob / file对象指向它自己的文档(不是字符串)

现在有两种可能的情况:

情景1

用户使用浏览按钮

手动选择文件

您需要在页面中添加输入,并在选择文件时触发上传文件,如下所示:



uploadDataFile();

function uploadDataFile(fileInput) {
  // creates the FormData object
  var form = new FormData();
  // get the first file in the file list of the input 
  // (you will need a loop instead if the user will select many files)
  form.append("uploadFile", fileInput.files[0]);
  // ... the rest of your AJAX code here ...
}

<input type="file" onchange="uploadDataFile(this)" />
&#13;
&#13;
&#13;

场景2

直接上传文件,无需用户干预

您需要手动构建文件对象,与此answer相同,然后将其正常添加到数据对象

&#13;
&#13;
function uploadDataFile() {
  // creates the file object
  var fileObject = new File (...);
  // creates a data object and appends the file object to it
  var form = new FormData();
  form.append("uploadFile", fileObject);
  // ... the rest of your AJAX code here ...
}
&#13;
&#13;
&#13;

最后一点

请注意FormData&amp;的浏览器兼容性File个对象