Ошибка: enoEnt: нет такого файла или каталога, откройте 'public/temp/1.png'Javascript

Форум по Javascript
Ответить
Anonymous
 Ошибка: enoEnt: нет такого файла или каталога, откройте 'public/temp/1.png'

Сообщение Anonymous »

Я пытаюсь загрузить файлы с локального хранилища в облачное использование Multer, и хотя у меня создается папка Public/Temp и добавлено изображение, когда я пытаюсь разместить информацию, используя почтальон, чтобы проверить свой код, я получаю следующую ошибку.
multer.middleware.js.import multer from "multer"

const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "./public/temp")
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
})

export const upload = multer({
storage,
})
< /code>
user.routes.js
import {Router} from 'express'
import {registerUser} from '../controllers/user.controller.js'
import {upload} from '../middlewares/multer.middleware.js'

const router = Router()

router.route("/register").post(
upload.any(),
registerUser
)

export default router
< /code>
user.controller.js
import {asyncHandler} from '../utils/asyncHandler.js'
import {apiError} from '../utils/apiError.js'
import {User} from '../models/user.model.js'
import {uploadOnCloudinary} from '../utils/cloudinary.js'
import {apiResponse} from '../utils/apiResponse.js'

const registerUser = asyncHandler(async (req,res)=>{
const {username,password,email,fullName} = req.body
console.log("Email: ",email);

console.log("req.files:", req.files);
console.log("req.body:", req.body);

if([fullName,username,email,password].some((field)=>field?.trim()==="")){
throw new apiError(400, "All fields are required")
}

const existedUser = await User.findOne({
$or: [{ username },{ email }]
})

if(existedUser){
throw new apiError(409, "User with email or password already exists")
}

const avatarLocalPath = req.files?.avatar[0]?.path;
let coverimageLocalPath;
if (req.files && Array.isArray(req.files.coverimage) && req.files.coverimage.length > 0) {
coverimageLocalPath = req.files.coverimage[0].path
}

if(!avatarLocalPath){
throw new apiError(400,"Avatar file is required")
}

const avatar = await uploadOnCloudinary(avatarLocalPath);
const coverimage = await uploadOnCloudinary(coverimageLocalPath);

if(!avatar){
throw new apiError(400,"Avatar file is required");
}

const user = await User.create({
fullName,
avatar:avatar.url,
coverImage: coverimage?.url||"",
email,
password,
username: username.toLowerCase()
})

const createdUser = await User.findById(user._id).select(
"-password -refreshToken"
)

if(!createdUser){
throw new apiError(500,"Something went wrong while registering the user")
}

return res.status(201).json(
new apiResponse(200, createdUser, "User registered Successfully")
)
})

export {registerUser}
< /code>
clodinary.js
import {v2 as cloudinary} from "cloudinary"
import fs from "fs"

cloudinary.config({
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET
});

const uploadOnCloudinary = async(localFilePath)=>{
try{
if(!localFilePath) return null;

const response = await cloudinary.uploader.upload(localFilePath,{
resource_type:"auto"
})

console.log("file has been uploaded to cloudinary: ",response.url);
return response

}catch(error){
fs.unlinkSync(localFilePath);
return null;
}
}

export {uploadOnCloudinary}
< /code>
Я пробовал много ресурсов, чтобы исправить этот код, но, кажется, ничего не работает < /p>
Я изменил user.routes.js с < /p>
upload.fields([
{
name: "avatar",
maxCount: 1
},
{
name: "coverImage",
maxCount: 1
}
])
< /code>
к указанному выше, но ошибка все еще сохраняется, я проверил оболочку «аватара» и «Covermage» в почтальстве и в моем коде, и это та же самая, но ошибка все еще остается прежней. Любые предложения о том, как это исправить.

Подробнее здесь: https://stackoverflow.com/questions/797 ... temp-1-png
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»