Created
April 15, 2024 08:02
-
-
Save silvesterwali/e219b586eda337dd09b938bc4dc563fa to your computer and use it in GitHub Desktop.
Where Directory to put uploads files in nuxt3 server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Need help ! | |
what directory should i put my file for example image while upload file to server. | |
in my case i put them under public/uploads and working just fine for dev mode. | |
but when i run command npm run build those files from public is copy to .output/public/uploads folder. | |
i wonder in production where i should put my upload file put them directly to .output/public/uploads or public/uploads. | |
here is my code that handle the file upload on `server/api/imageUpload.post.ts` | |
```ts | |
import { z } from 'h3-zod' | |
import fs from "fs" | |
import path from "path" | |
export default defineEventHandler(async (event) => { | |
const formData = await readFormData(event); | |
const object = { | |
thumbnail: formData.get("thumbnail") ?? undefined | |
} | |
const validate = z.object({ | |
thumbnail: z | |
.instanceof(File) | |
}) | |
try { | |
await validate.parseAsync(object) | |
} catch (error) { | |
throw createError({ | |
statusCode: 400, | |
message: 'Invalid data', | |
data: error | |
}) | |
} | |
let pathNameUpload | |
if (object.thumbnail) { | |
// will upload the image public/uploads | |
const image = object.thumbnail as File | |
const ext = path.extname(image.name) | |
const nameF = Date.now() + ext | |
const pathName = path.join(process.cwd(), "public/uploads", nameF) | |
pathNameUpload = "/uploads/" + nameF | |
fs.writeFileSync(pathName, Buffer.from(await image.arrayBuffer())) | |
} | |
return { | |
message: "Image upload successfull", | |
data:pathNameUpload | |
} | |
}) | |
``` | |
here is my misunderstanding: | |
1. if i put my files in public/uploads . this docs https://nitro.unjs.io/guide/assets#public-assets says when building nitro will copy | |
files in the public directory. this means my upload files on production will wait until the next build so they can be access. | |
2. if i put directly to .output/public/uploads is these file manifest like in the docs https://nitro.unjs.io/guide/assets#production-public-assets | |
if have any solution i really appreciate it. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment