为什么不能从服务人员发送二进制数据?

时间:2019-12-18 16:55:28

标签: javascript service-worker progressive-web-apps

我想从服务人员发送带有图像(二进制)的表单数据。

发送没有图像的表单数据,效果很好。 但是,如果表单数据包含图像(二进制),则服务工作者将毫无错误地发送任何内容。

然后..我发现了一些问题

  • 选择韩文文件名=>会出现此问题
  • 选择英文(ascii字符)=>可以正常工作

    奇怪的是,没有服务人员,两者都能很好地工作

我尝试重新启动浏览器,取消注册服务工作者,将Content-Type标头添加到axios请求中,以及更多的东西:(

我准备了下面的代码。我不知道为什么要这样工作

const formData = new FormData();
formData.append('title', paperTitle.value);
formData.append('content', paperContent.value);
formData.append('image', paperImage.files[0]);

// Send form data
axios.post('/api/addPost', formData)
  .then(({ data }) => {
     // Success
  })
  .catch(console.error);
// Service worker - fetch handler
self.addEventListener('fetch', function (event) {
  event.respondWith(fetch(event.request));
});

without image

没有图片(工作正常)

with image

带有图片-韩国,中文等...文件名(表格数据不见了)

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。


    [
        {
            "name": "Play It!!",
            "type": "recording",
            "status": "INITIATED",
            "version": 1,
            "id": 1
        },
        {
            "name": "Play It!!",
            "type": "recording",
            "status": "COMPLETED",
            "version": 1,
            "id": 2
        }
    ]

但是我仍然不知道为什么只有const formData = new FormData(); formData.append('title', paperTitle.value); formData.append('content', paperContent.value); // formData.append('image', paperImage.files[0]); // before formData.append('file', paperImage.files[0]); // after 键起作用。