Giter Site home page Giter Site logo

Comments (4)

marpstar avatar marpstar commented on June 24, 2024

Worth mentioning that this only occurs in a production build, as next dev runs with the local repo's public folder, not the one bundled in .next

from next-payload.

marpstar avatar marpstar commented on June 24, 2024

vercel/next.js#58169 (comment) The Next team seems to suggest that the Payload recommendation goes against what they support.

I get that cloud is the way, but my client can't jump through the approval hoops for offsite storage. I'm going to start digging on their recommended path of serving files through route.ts and will report back.

from next-payload.

marpstar avatar marpstar commented on June 24, 2024

Things seem to be working with the following configuration. Still looking for a way to secure my custom route handler.

.env

PAYLOAD_UPLOADS_DIR=/some/path/on/disk

Media.ts

{
  //...
  "upload": {
    staticDir: process.env.PAYLOAD_UPLOADS_DIR,
    staticURL: "/files"
  },
}

/src/app/files/[filename]/route.ts

import fs from "fs";
import { readFile } from "fs/promises";
import mime from "mime-types";

export async function GET(
  request: Request,
  { params }: { params: { filename: string } }
) {

  const filename = params.filename;

  const uploadDir = process.env.PAYLOAD_UPLOADS_DIR;

  const filePath = `${uploadDir}/${filename}`;

  if (!fs.existsSync(filePath)) {
    return new Response("File not found", { status: 404 });
  }

  const bytes = await readFile(filePath);

  const mimeType = mime.lookup(filePath) || "application/octet-stream";

  // read file from file system
  return new Response(bytes, {
    headers: {
      "Content-Type": mimeType,
    },
  });
}

from next-payload.

jacobsfletch avatar jacobsfletch commented on June 24, 2024

Hi again @marpstar, this repo will soon be archived because it's been merged into the main Payload repo here: https://github.com/payloadcms/payload/tree/main/packages/next. Payload 3.0 ships with native support for Next.js and is currently out in beta here: https://github.com/payloadcms/payload-3.0-demo. I'm going to close this issue now but feel free to keep the conversation going either as a GitHub Discussion or on Discord. If think issue persists, feel free to open a new ticket on either the demo repo or the monorepo with the 3.x-beta label, and be sure to include a reproduction so we can fix it faster.

from next-payload.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.