اذهب إلى المحتوى

السؤال

نشر

السلام عليكم.

صحيح تجربتي في تطوير المواقع ضعيفة جدا و لكن أرى أنه خلال التعامل مع الملفات في node js هو أن الموجه الخاص بالملفات منفصل عن الموجه الخاص بجسم الكائن. 

يعني عزل req.file عن req.boby

مثال: إذا كانت المعلومات الخاصة بالمستخدم تحتوي صورة و إسم و ... ، من الأفضل أن يكون الموجه الخاص بصورة المستخدم و الموجه الخاص بالإسم و بقية المعطيات منفصلين.

أنتظر آراءكم.

Recommended Posts

  • 0
نشر
بتاريخ 2 دقائق مضت قال محمود سعداوي2:

إذا أردت تحديث البيانات كتغيير الصورة مثلا فيتوجب علي حذف الصورة القديمة من الملف `/upload` كيف يكون ذلك.

يمكنك القيام بذلك بهذه الطريقة :

 

const express = require('express');
const app = express();
const upload = require('./multer');
const fs = require('fs');

app.post('/upload', upload.single('file'), (req, res) => {
  const { name, email } = req.body;
  console.log(`Received file: ${req.file.originalname}`);
  console.log(`Name: ${name}`);
  console.log(`Email: ${email}`);
  
  // Perform any necessary processing on the uploaded file here
  
  // Delete the file from disk
  fs.unlink(req.file.path, (err) => {
    if (err) {
      console.error(err);
      return res.status(500).send('Error deleting file');
    }
    console.log(`File ${req.file.originalname} deleted successfully`);
    res.send('File uploaded and deleted successfully!');
  });
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});
  • 0
نشر

هذا ممكن بالفعل ويمكنك القيام بذلك عبر اتباع هذه الخطوات:

1. قم بتثبيت Multer عن طريق تشغيل في دليل المشروع الخاص بك:

npm install multer

2. استدعِ Multer وأعد إعداد التخزين للملفات المرفوعة في ملف منفصل، مثل multer.js. على سبيل المثال:

const multer = require('multer');

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/');
  },
  filename: (req, file, cb) => {
    cb(null, file.originalname);
  }
});

const upload = multer({ storage: storage });

module.exports = upload;

3. في ملف الخادم الرئيسي الخاص بك، استدعِ Multer وأعد إعدادًا لمسار تحميل الملفات. على سبيل المثال:

const express = require('express');
const app = express();
const upload = require('./multer');

app.post('/upload', upload.single('file'), (req, res) => {
  const { name, email } = req.body;
  console.log(`Received file: ${req.file.originalname}`);
  console.log(`Name: ${name}`);
  console.log(`Email: ${email}`);
  res.send('File uploaded successfully!');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

4. في هذا المثال، يتم إعداد المسار `/upload` للتعامل مع طلبات POST مع تحميل ملف واحد باستخدام طريقة `upload.single()` . يمكن الوصول إلى بيانات الاسم والبريد الإلكتروني من كائن `req.body`. يمكن الوصول إلى الملف المرفوع من كائن `req.file` ، الذي يحتوي على معلومات مثل اسم الملف الأصلي ونوع الملف والمسار.

5. عند تحميل الملف وتسجيل البيانات، يرسل الخادم رسالة نجاح إلى العميل.

  • 0
نشر
بتاريخ 1 دقيقة مضت قال عمر قره محمد:

هذا ممكن بالفعل ويمكنك القيام بذلك عبر اتباع هذه الخطوات:

1. قم بتثبيت Multer عن طريق تشغيل في دليل المشروع الخاص بك:

npm install multer

2. استدعِ Multer وأعد إعداد التخزين للملفات المرفوعة في ملف منفصل، مثل multer.js. على سبيل المثال:

const multer = require('multer');

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/');
  },
  filename: (req, file, cb) => {
    cb(null, file.originalname);
  }
});

const upload = multer({ storage: storage });

module.exports = upload;

3. في ملف الخادم الرئيسي الخاص بك، استدعِ Multer وأعد إعدادًا لمسار تحميل الملفات. على سبيل المثال:

const express = require('express');
const app = express();
const upload = require('./multer');

app.post('/upload', upload.single('file'), (req, res) => {
  const { name, email } = req.body;
  console.log(`Received file: ${req.file.originalname}`);
  console.log(`Name: ${name}`);
  console.log(`Email: ${email}`);
  res.send('File uploaded successfully!');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

4. في هذا المثال، يتم إعداد المسار `/upload` للتعامل مع طلبات POST مع تحميل ملف واحد باستخدام طريقة `upload.single()` . يمكن الوصول إلى بيانات الاسم والبريد الإلكتروني من كائن `req.body`. يمكن الوصول إلى الملف المرفوع من كائن `req.file` ، الذي يحتوي على معلومات مثل اسم الملف الأصلي ونوع الملف والمسار.

5. عند تحميل الملف وتسجيل البيانات، يرسل الخادم رسالة نجاح إلى العميل.

إذا أردت تحديث البيانات كتغيير الصورة مثلا فيتوجب علي حذف الصورة القديمة من الملف `/upload`

كيف يكون ذلك.

شكرا.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...