文件上传 - Firebase 托管上的下一个 JS API - 生产问题

File Upload - Next JS API on Firebase hosting - Production Issues

提问人:kirkage 提问时间:7/16/2023 更新时间:7/16/2023 访问量:93

问:

我的文件上传过程在我的本地计算机上运行良好,但生产中的相同代码无法正常工作。几分钟后超时,我收到 503 错误。我正在尝试获取文件并将其上传到 Firebase 存储。

前端功能:

export const uploadToStorage = async (file: File, cartId: string) => {
  const formData = new FormData();
  formData.append('cartId', cartId);
  formData.append('file', file, file.name);
  const url = 'api/save-file';

  const response = await fetch(url, {
    method: 'post',
    body: formData,
  });

  const body = await response.json();
  console.log(body);
  return body;
};

api/保存文件:

import type { NextApiRequest, NextApiResponse } from 'next';
import { storage } from '../../data/firebase-config';
import { ref, uploadBytes } from 'firebase/storage';
import formidable from 'formidable';
import { promises as fs } from 'fs';

const saveFile = async (req: NextApiRequest, res: NextApiResponse) => {
  const form = formidable({});
  let fields;
  let files;
  try {
    [fields, files] = await form.parse(req);

    const cartId = fields.cartId[0];

    const file: any = files.file;
    const readF = await fs.readFile(file[0].filepath);
    const fileRef = ref(storage, `${cartId}/${file[0].originalFilename}`);
    const uploadRes = await uploadBytes(fileRef, readF);

    res.status(200).json({ success: true, message: uploadRes });
  } catch (err: any) {
    res.status(200).json({ success: false, message: err.message });
  }
};

export default saveFile;
export const config = {
  api: {
    bodyParser: false,
  },
};
TypeScript Next.js firebase-storage firebase-hosting 强大

评论

0赞 Walle Cyril 7/16/2023
github.com/node-formidable/formidable/issues/594 相关 ?

答: 暂无答案