Sveltekit 无法从 POST 表单数据中读取数据

Sveltekit unable to read data from POST formdata

只是在 Sveltekit (3.44) 中尝试以下操作,但控制台始终输出:

Got data FormData {}

请求很简单(通过 Postman 发出):

curl --request POST \
  --url http://localhost:3000/todos.json \
  --header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
  --form test=hello

代码: src/routes/todos/index.json.ts

export const post: RequestHandler = async (request) => {
    const data = await request.request.formData();
    console.log('Got data', data);
    return {
        status: 200,
        body: 'text'
    }
}

除了解构和清理这段代码 - 为什么 formData 是空的?

NB 当设置数据线等待 request.request.text() 我收到(这表明我正在接收数据):

Got data --X-INSOMNIA-BOUNDARY
Content-Disposition: form-data; name="test"

hello
--X-INSOMNIA-BOUNDARY--

这是一个已知问题:https://github.com/sveltejs/kit/issues/4198这不是错误,只是很难记录表单数据并使用它。如 link 中所建议,如果您确实希望在控制台中记录它,请使用以下命令:


const body = await event.request.formData();

// to get everything
console.log(...body); // ["name", "Rich Harris"] ["hobbies", "svelte"], ["hobbies", "journalism"]

// if you know you don't have duplicates
console.log(Object.fromEntries(body)); // { name: "Rich Harris", hobbies: "journalism" }

我在使用 'await request.json()' 时没有遇到任何问题,除非我必须将文件上传到 API。这让我非常头疼,我总是最终使用 S3 存储桶,或者为此使用 Python 或 Express.js.

制作一个特殊的 API