Abolfazl
1 سال پیش توسط Abolfazl مطرح شد
3 پاسخ

ذخیره کردن عکس در سرور

سلام وقتتون بخیر

وقتی که یک فایل تصویر به عنوان پروفایل از یوزرم میگیرم میخوام اون رو بفرستم به فایل نودجی اسم (بک اند) که توی هاستم ، مثلا یه فولدر بسازم و اون فایل رو داشته باشم

ولی مشکل اینجاس که چجوری اون فایل رو از کلاینت به سرور انتقال بدم هر جور فکر میکنم جور در نمیاد نمیدونم

از شیء FormData هم استفاده کردم که دیتایی رو که گرفتم بفرستم سرور ذخیره کنم فقط یه سری اطلاعات بود مثل نام که به دردم نمیخورد

لطفا راه حل خودتون رو بهم بگید
@FullStack
@ossvahid
@Raymond
@Pouyab
@Arshiamohammadei
@Farzadameri


ثبت پرسش جدید
Arshiamohammadei
تخصص : وب و هوش مصنوعی
@Arshiamohammadei 1 سال پیش مطرح شد
2

سلام. برای انتقال فایل از کلاینت به سرور می‌توانید از API FormData استفاده کنید.

در این روش، شما می‌توانید یک فرم HTML ایجاد کنید و در آن فایل تصویر را به عنوان یک فیلد انتخاب فایل بگذارید. سپس با استفاده از جاوااسکریپت، فرم را به همراه فایل ارسال کنید.

برای مثال، در اینجا یک قطعه کد نمونه در نظر گرفته شده است:

<form enctype="multipart/form-data">
    <input type="file" name="profilePic">
    <button onclick="upload()">Upload</button>
</form>

<script>
    function upload() {
        const files = document.querySelector('input[type=file]').files;
        const formData = new FormData();

        formData.append('profilePic', files[0]);

        fetch('/upload', {
            method: 'POST',
            body: formData
        })
        .then(response => {
            console.log(response);
        })
        .catch(error => {
            console.error(error);
        });
    }
</script>

در این کد، فرم HTML یک فیلد انتخاب فایل با نام "profilePic" دارد. در تابع upload()، فایل انتخاب شده از فیلد ورودی استخراج می‌شود. سپس یک شیء FormData ایجاد شده و فایل در آن ضمیمه می‌شود. در نهایت، با استفاده از fetch()، فرم به همراه فایل به آدرس "/upload" ارسال می‌شود.

در بک‌اند Node.js، شما می‌توانید از پکیج multer برای ذخیره فایل‌های ارسالی استفاده کنید. پس از نصب این پکیج، می‌توانید با استفاده از middleware() آن را به مسیر مورد نظر اعمال کنید. برای مثال:

const express = require('express');
const multer  = require('multer');
const upload = multer({ dest: 'uploads/' });

const app = express();

app.post('/upload', upload.single('profilePic'), function (req, res, next) {
    // فایل با موفقیت ارسال شد و در دایرکتوری uploads/ ذخیره شد.
})

در این کد، middleware() multer با استفاده از تابع dest() مشخص کرده‌ایم که فایل‌های ارسال شده در دایرکتوری "uploads/" ذخیره شوند. همچنین تابع single() با نام فیلد "profilePic" اطمینان حاصل می‌کند که تنها یک فایل ارسال شده است. در نهایت، از تابع next() برای ادامه اجرای middleware های دیگر (اگر وجود داشته باشند) استفاده شده است.

با این روش، فایل تصویر به صورت موفقیت‌آمیزی از کلاینت به سرور منتقل می‌شود و در دایرکتوری مورد نظر در بک‌اند ذخیره می‌شود.


oss_vahid
تخصص : wp developer
@ossvahid 1 سال پیش مطرح شد
1

فایل ها رو باید توی هاست آپلود کنی بعد آدرسش بریزی دیتابیس هربار خاستی ازش استفاده کنی آدرس ذخیره شده توی دیتابیس رو فراخوانی کنی

در خصوص آپلود فایل گوگل کنی بهتره من اینو برات پیدا کردم چون nodejs هستش چیزی متوجه نشدم ولی مطمعنن خودت بهتر میفهمی چی به جیه
آپلود فایل با نودجی اس


Arshiamohammadei
تخصص : وب و هوش مصنوعی
@Arshiamohammadei 1 سال پیش مطرح شد
2

سلام. برای انتقال فایل از کلاینت به سرور می‌توانید از API FormData استفاده کنید.

در این روش، شما می‌توانید یک فرم HTML ایجاد کنید و در آن فایل تصویر را به عنوان یک فیلد انتخاب فایل بگذارید. سپس با استفاده از جاوااسکریپت، فرم را به همراه فایل ارسال کنید.

برای مثال، در اینجا یک قطعه کد نمونه در نظر گرفته شده است:

<form enctype="multipart/form-data">
    <input type="file" name="profilePic">
    <button onclick="upload()">Upload</button>
</form>

<script>
    function upload() {
        const files = document.querySelector('input[type=file]').files;
        const formData = new FormData();

        formData.append('profilePic', files[0]);

        fetch('/upload', {
            method: 'POST',
            body: formData
        })
        .then(response => {
            console.log(response);
        })
        .catch(error => {
            console.error(error);
        });
    }
</script>

در این کد، فرم HTML یک فیلد انتخاب فایل با نام "profilePic" دارد. در تابع upload()، فایل انتخاب شده از فیلد ورودی استخراج می‌شود. سپس یک شیء FormData ایجاد شده و فایل در آن ضمیمه می‌شود. در نهایت، با استفاده از fetch()، فرم به همراه فایل به آدرس "/upload" ارسال می‌شود.

در بک‌اند Node.js، شما می‌توانید از پکیج multer برای ذخیره فایل‌های ارسالی استفاده کنید. پس از نصب این پکیج، می‌توانید با استفاده از middleware() آن را به مسیر مورد نظر اعمال کنید. برای مثال:

const express = require('express');
const multer  = require('multer');
const upload = multer({ dest: 'uploads/' });

const app = express();

app.post('/upload', upload.single('profilePic'), function (req, res, next) {
    // فایل با موفقیت ارسال شد و در دایرکتوری uploads/ ذخیره شد.
})

در این کد، middleware() multer با استفاده از تابع dest() مشخص کرده‌ایم که فایل‌های ارسال شده در دایرکتوری "uploads/" ذخیره شوند. همچنین تابع single() با نام فیلد "profilePic" اطمینان حاصل می‌کند که تنها یک فایل ارسال شده است. در نهایت، از تابع next() برای ادامه اجرای middleware های دیگر (اگر وجود داشته باشند) استفاده شده است.

با این روش، فایل تصویر به صورت موفقیت‌آمیزی از کلاینت به سرور منتقل می‌شود و در دایرکتوری مورد نظر در بک‌اند ذخیره می‌شود.


Abolfazl
تخصص : Frount-End Web Developer
@abolfazljamshidi101010 1 سال پیش مطرح شد
0

سلام
ممنونم از توضیحات خوبتون
من یه مشکل دارم اینجا
وقتی توی جاواسکریپت فرم رو میگیرم میتونم دیتا های اون رو ببینم و مشکلی نداره ولی وقتی به سرور ارسالش میکنم یه آبجکت خالی دریافت میکنم مشکل از چیه

            const formE = new FormData(testF)
            const url = 'http://localhost:3000/addPackage'
            const send = await fetch(url,{
                method:'POST',
                body: formE
            })
            const content = await send.json()

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام