尝试将压缩的 wkt 文件上传到 here-maps rest 时收到错误请求 400 api

Getting a bad request 400 when trying to upload zipped wkt file to here-maps rest api

我们在为地理围栏上传新图层时遇到 fleet.ls.hereapi.com 问题。

const myId = 'MYLAYER'; // just a id to check
zip.file('data.wkt', `NAME\tWKT\n${myId}\t${wkt}`);
const content = await zip.generateAsync({ type: 'nodebuffer' });
const formData = new FormData();
formData.append('zipfile', content);
await axios.post(config.HERE_MAPS_UPLOAD_ENDPOINT, formData, {
  headers: {
    'content-type': 'multipart/form-data',
  },
  params: {
    apiKey: config.HERE_MAPS_REST_API_KEY,
    layer_id: myId,
  },
});

我们收到一个没有消息的错误请求,不知道问题出在哪里。同样的实现在前端工作('blob' 作为 zip 类型)。是否有参数可以从 api 获得更好的错误消息? 我们从本教程中获得了如何实现它的说明:https://www.youtube.com/watch?v=Ayw9GcS1V-8 正如我提到的,它在前端运行良好。如果我在节点中编写文件并通过 curl 上传它,它也可以工作。提前感谢您的帮助!

Edit: I'm getting the following issue from the API: 'Multipart should contain exactly one part but contains 0'

我修好了! 问题是 api 需要表单数据的文件名。此文件名可以作为第三个参数提供,如 here 所述。

所以我基本上将 formData.append('zipfile', content); 更改为 formData.append('zipfile', content, zipfile.zip); 并且成功了。

希望这对以后的人有所帮助!