sveltejs / kit

web development, streamlined
https://kit.svelte.dev
MIT License
18.43k stars 1.88k forks source link

Cannot access PUT files outside of formdata. #12508

Open kattschan opened 1 month ago

kattschan commented 1 month ago

Describe the bug

I have a PUT function inside of a +server.js file. If a file is uploaded to the server and it is not in a multipart form, there is no way to access the file.

Reproduction

Reproduction can be found here: https://github.com/kattschan/sveltekit-bugreport-repro. Run it on your machine (StackBlitz wouldn't play nice with curl), and try, for instance curl --upload-file package.json http://localhost:5173/package.json and see what gets outputted to console. Using all of the ways to extract data from the response, there is no way to get the file attached in this manner.

Logs

TypeError: Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".
    at node:internal/deps/undici/undici:4265:19
    at successSteps (node:internal/deps/undici/undici:4288:27)
    at consumeBody (node:internal/deps/undici/undici:4294:9)
    at _Request.formData (node:internal/deps/undici/undici:4242:18)
    at PUT (O:\projects\sharkfiles\src\routes\[filename]\+server.js:9:33)
    at Module.render_endpoint (O:\projects\sharkfiles\node_modules\@sveltejs\kit\src\runtime\server\endpoint.js:43:24)
    at resolve (O:\projects\sharkfiles\node_modules\@sveltejs\kit\src\runtime\server\respond.js:443:23)
    at async Module.respond (O:\projects\sharkfiles\node_modules\@sveltejs\kit\src\runtime\server\respond.js:319:20)
    at async file:///O:/projects/sharkfiles/node_modules/@sveltejs/kit/src/exports/vite/dev/index.js:524:22

(when running request.formData())

System Info

O:\projects\sharkfiles>npx envinfo --system --binaries --browsers --npmPackages "{svelte,@sveltejs/*,vite}"
Need to install the following packages:
envinfo@7.13.0
Ok to proceed? (y)

  System:
    OS: Windows 11 10.0.22631
    CPU: (12) x64 12th Gen Intel(R) Core(TM) i5-12400F
    Memory: 19.60 GB / 31.86 GB
  Binaries:
    Node: 20.15.1 - C:\Program Files\nodejs\node.EXE
    npm: 10.7.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: Chromium (126.0.2592.113)
    Internet Explorer: 11.0.22621.3527
  npmPackages:
    @sveltejs/adapter-auto: ^3.0.0 => 3.2.2
    @sveltejs/kit: ^2.0.0 => 2.5.18
    @sveltejs/vite-plugin-svelte: ^3.0.0 => 3.1.1
    svelte: ^4.2.7 => 4.2.18
    vite: ^5.0.3 => 5.3.5

O:\projects\sharkfiles>

Severity

serious, but I can work around it

Additional Information

my current workaround is to use an express server with middleware, but this introduces added complexity.

ayuancool commented 1 month ago

we need "upload" dir,make kit easier.