服务器操作和文件

问题描述 投票:0回答:1

我只是想知道是否可以使用服务器操作将文件上传到 nextjs 项目的某个文件夹(可能是公共文件夹),例如存储图像、文档、工作表和 pdf 内容。

在nodejs中,我们有 multer 和强大的,但我坚持服务器操作,因为它不使用

    'Content-Type': 'multipart/form-data

我需要存储申请人的姓名、电子邮件、电话和简历等信息。我想知道服务器操作是否可能。

"use server";
import prisma from "@/utils/prisma";
import fs from "fs";
import FormData from "form-data";
import path from "path";
import { v4 as uuid } from "uuid";

const uploadApplicant = async (
  name: string,
  email: string,
  tel: string,
  file: File | null
) => {
  const fileName = uuid();
  const formData = new FormData();

  formData.append("file", file);
  console.log("Form data: ", formData);
  const binaryData = formData.getBuffer();

  console.log("Binary: ");
  console.log(binaryData);

  const filePath = path.join(
    __dirname,
    "../../../../",
    "public",
    "uploads",
    `${fileName}.pdf`
  );

  fs.writeFileSync(filePath, binaryData, "binary");

  await prisma.applicant.create({
    data: {
      name,
      tel,
      email,
      fileName,
    },
  });
};

export default uploadApplicant;
next.js multipartform-data serverless
1个回答
0
投票

文件对象是一个 Web API,仅在浏览器环境中可用,在 Node.js 中不可用。

当您需要将文件上传到服务器时,通常不会将整个 File 对象发送到服务器。相反,您可以将文件数据作为二进制流(数组缓冲区)发送。这通常是使用 FormData 对象来完成的,它可以处理文件上传。或者您应该在客户端处理文件上传。

© www.soinside.com 2019 - 2024. All rights reserved.