Я пытаюсь загрузить файлы с локального хранилища в облачное использование 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
Ошибка: enoEnt: нет такого файла или каталога, откройте 'public/temp/1.png' ⇐ Javascript
Форум по Javascript
1759503191
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» в почтальстве и в моем коде, и это та же самая, но ошибка все еще остается прежней. Любые предложения о том, как это исправить.
Подробнее здесь: [url]https://stackoverflow.com/questions/79781893/error-enoent-no-such-file-or-directory-open-public-temp-1-png[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия