Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save silvesterwali/e219b586eda337dd09b938bc4dc563fa to your computer and use it in GitHub Desktop.
Save silvesterwali/e219b586eda337dd09b938bc4dc563fa to your computer and use it in GitHub Desktop.
Where Directory to put uploads files in nuxt3 server
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