AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 76985726
Accepted
Rishabh Kumar
Rishabh Kumar
Asked: 2023-08-27 12:31:02 +0800 CST2023-08-27 12:31:02 +0800 CST 2023-08-27 12:31:02 +0800 CST

O upload da imagem para o servidor em Next.js 13 resulta em erro ENOENT

  • 772

Estou trabalhando em um projeto usando Next.js 13 e estou encontrando um problema ao tentar fazer upload de uma imagem para o servidor. A mensagem de erro que estou recebendo é:

- error Error: ENOENT: no such file or directory, open 'temp/img.jpeg'

Aqui está o código do lado do cliente do meu aplicativo:

"use client";
import axios from "axios";
import { useState } from "react";

export default function Home() {
  const [file, setFile] = useState();
  const [name, setname] = useState("rishabh");
  const submit = async (e) => {
    e.preventDefault();
    const formdata = new FormData();
    formdata.set("file", file);
    const res = await axios.post("/api/post", formdata);
    console.log(res);
  };

  function sendfile(e) {
    console.log(e.target.files[0]);
    setFile(e.target.files[0]);
    console.log(file);
  }
  
  return (
    <div>
      <form onSubmit={submit}>
        <label>upload files</label>
        <input
          name="file"
          onChange={(e) => setFile(e.target.files[0])}
          type="file"
        ></input>
        <button type="submit">Submit</button>
      </form>
    </div>
  );
}

insira a descrição da imagem aqui

Aqui está o código do lado do servidor do meu aplicativo:

import { writeFile, writeFileSync } from "fs";
import { NextRequest,NextResponse } from "next/server";
import {join} from 'path';
export async function POST(NextRequest)
{
    const data = await NextRequest.formData();
    const file = data.get('file');
    const bytes = await file.arrayBuffer()
    const buffer = Buffer.from(bytes)
    const path = join('./','temp',file.name)
    console.log('====================================');
    console.log(file.name,buffer);
    console.log('====================================');
    writeFileSync(path,buffer);
    
    return NextResponse.json({message:"get"})
}

insira a descrição da imagem aqui

next.js
  • 1 1 respostas
  • 19 Views

1 respostas

  • Voted
  1. Best Answer
    Nazrul Chowdhury
    2023-08-27T17:30:34+08:002023-08-27T17:30:34+08:00

    No código do lado do servidor, você está construindo o caminho do arquivo usando a função join para salvar a imagem carregada. A função join espera que seus argumentos sejam segmentos de caminho que serão concatenados para formar um novo caminho. No entanto, você está fornecendo ./ como um segmento de caminho, que se refere ao diretório atual, e depois anexando 'temp' e file.name a ele. Isso resulta em um caminho concatenado que começa com ./, tornando-o um caminho relativo do diretório de trabalho atual.
    Em vez disso, você poderia fornecer um caminho absoluto com process.cwd() para garantir que o caminho para o arquivo seja construído de forma consistente e não seja afetado por alterações no diretório de trabalho. Tente algo assim,

    const fileName = file.name
    const path = join(process.cwd(), 'temp', fileName) // Construct absolute path
    

    Se ainda estiver tendo problemas, você precisará garantir que a pasta temporária exista antes de tentar salvar os arquivos nela. Você pode usar o módulo fs para criar o diretório se ele não existir,

    // Ensure that the 'temp' directory exists
    try {
      mkdirSync(join(process.cwd(), 'temp'), { recursive: true })
    } catch (error) {
       console.error("Error creating 'temp' directory:", error)
       return NextResponse.json({ error: "An error occurred while creating the directory." }, { status: 500 })
    }
    
    • 1

relate perguntas

  • Como desabilitar os dados do cache e atualizá-los toda vez que o cliente visitar a página em Next.js

  • ReferenceError: o documento não está definido em Next.js

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve