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
只是在 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