آپلود عکس در TinyMCE با php

  • آپدیت شده در تاریخ

آپلود عکس در TinyMCE با php

آپلود عکس یکی از قابلیت های معمول ادیتور های WYSIWYG HTML است . اگر از ادیتور TinyMCE در textarea استفاده می کنید , به راحتی می توانید تصویر را در ادیتور اضافه کنید. ویرایشگر HTML در TinyMCE یک گزییه برای آپلود عکس و قرار دادن آن به بصورت data type را میدهد. اما همانطور که می دانید رندر شدن این تصاویر از طریق مرورگر کمی زمانبر است بنابراین همیشه آپلود عکس در php و سمت سرور برای قرار دادن تصویر در TinyMCE بهترین گزینه است .

ویرایشگر TinyMCE به شما امکان انتخاب فایل های لوکال را می دهد. اما , برای استفاده موثر از این قابلیت ها نیاز است چندین کانفیگ رو انجام بدید . همچنین , هندلر آپلود سمت سرور (server-side) برای آپلود فایل عکس در سرور نیاز است .

در این آموزش قصد داریم به شما نشان دهیم چگونه به کاربر اجازه آپلود عکس در TinyMCE با php را بدهید..

این مثال هماهنگ سازی قابلیت آپلود عکس در TinyMCE با image_upload_handler و هندلر php را نشان میدهد. با این قابلیت , کاربر می تواند تصاویر را از کامپیوتر شخصی آپلود و در ادیتور TinyMCE قرار دهد. همچنین با یک رابط کاربری دوستانه (UI) , امکان آپلود فایل با کشیدن و رها کردن را از کامپیوتر می دهد.

 

کد HTML

یک المنت HTML برای افزودن ویرایشگر TinyMCE مشخص میکنیم.

کد JavaScript

در ابتدا , کتابخانه جاوااسکریپت پلاگین TinyMCE را فراخوانی می کنیم.

تنظیمات زیر امکان انتخاب فایل محلی هاست و قابلیت آپلود عکس در TinyMCE را فعال می کند.

  • Image_upload_url – آدرس URL هندلر سمت سرور را مشخص می کند . همین که این مورد تعریف شد , یک زبانه (Tab) آپلود نمایان می شود .
  • Image_upload_handler – این کانفیک هندلر پیش فرض برای آپلود تصویر است . این هندلر دارای یک تابع با ۳ آرگومان است – blobinfo,success,failure . در صورتی که خروجی success باشد در نهایت یک آبجکت از نوع داده jSON برگشت می دهد.

هندلر آپلود (upload.php)

کد php زیر یک هندلر آپلود سمت سرور را برای آپلود عکس در TinyMCE با php نشان میدهد

  • در ابتدا با تابع is_uploaded_file() چک میکنیم آیا فایلی با HTTP POST بارگذاری شده است یا خیر
  • بررسی میکنیم که منبع ارسال فایل صحیح باشد .
  • با تابع pathinfo در php پسوند فایل را اعتبارسنجی میکنیم
  • با تابع move_uploaded_file() فایل را در سرور آپلود میکنیم .
  • پیام آپلود موفقیت آمیز را بصورت jSON برگشت می دهیم . از کلید location برای مشخص کردن مکان تصویر ذخیره شده استفاده می کنم.

نمایش پنجره آپلود عکس در TinyMCE

آیکون عکس در تولبار ادیتور یک پنجره برای آپلود تصویر را نمایان میکند . در تب Upload , می توانید یک تصویر ار از کامپیوتر انتخاب یا با drag & drop مستقیما بارگذاری کنید . تصویر در سمت سرور آپلود و نهایتا در ادیتور اضافه می شو .

آپلود عکس در TinyMCE با php

تظنیمات اضافی

به طور پیش فرض تمام URL ها به طور خودکار به url های نسبی (relative) تبدیل می شوند . اگر قصد دارید که آدرس URL های واقعی را اضافه کنید , مقدار convert_urls را false قرار بدید که باعث می شود تمام url ها به مقدار واقعی برگشت داده شوند .

امیدوارم از آموزش آپلود عکس در TinyMCE با php لذت برده باشید .

برای دانلود سورس کد کامل این مقاله می توانید به بخش باکس دانلود زیر این مقاله آموزشی مراجعه کنید.

هر سوالی داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۱۶)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. امید ۴ شهریور ۱۴۰۲

    سلام خسته نباشید
    من دارم یه پروژه دانشجویی مینویسم با PHP برای صفحه پست مطالبم از روش شما استفاده کردم کد های تاینی رو هم از سایت اصلی گرفتم و چندین بار رو پیج ایندکسم وارد کردم ادرس های فایل های js رو هم چندین بار چک کردم حتی لینک از سایت منبع دادم برای JS ولی تاینی اجرا نشد که نشد فقط یه textarea بهم نشون میده یه هلو ورد داخلشه. حقیقتا دیگه موخم جواب نمیده مشکل از کجاست ممنون میشم بتونید کمکم کنید.
    یه چیز جالبم یادم رفت بگم از سایت تاینی فایل ها رو دانلود میکنم تو یه صفحه جدا میسازم اجرا میکنم تاینی به خوبی باز میشه و قابل استفادس ولی همون رو میارم به پیج ایندکس خودم هیچ عکس العملی نمیده

    پاسخ
    1. حسن شفیعی ۵ شهریور ۱۴۰۲

      سلام ممنون
      داخل صفحه مورد نظر در مرورگر کلیک راست بزنید و inspect element رو انتخاب کنید و بعد تب console نگا کنید چه خطایی هست همچنین از network چک کنید که اسکریپت بدرستی لود شده باشد

      پاسخ
      1. امید ۵ شهریور ۱۴۰۲

        سلام مجدد با تشکر فراوان
        اقا مشکل حل شد دمت گرم این کونسوله که گفتی دیدم خطا توش نوشته سرچ زدم فهمیدم مشکل از کجاست و با اضافه کردن یه خط کد کلا همه چیز درست شد.
        اینجا هم بنویسم که برای بقیه هم ممکنه اتفاق بیوفته
        “تاینی حتما به روال استاندارد نیاز داره” چیزی بود که تو سایت تاینی نوشته بود و من یه خط کد رو جا انداخته بودم

        باید حتما تو دستورات اچ تی ام ال نوع رو مشخص کنید بزاریدش خط اول.

        بازم تشکر از راهنماییت.

        پاسخ
  2. اکبر ۲۹ آبان ۱۴۰۱

    سلام میشه این خط رو توضیح بدید مرسی
    / Allowed origins to upload images
    $accepted_origins = array(“http://localhost”, “http://107.161.82.130”, “https://netparadis.com”);

    پاسخ
    1. حسن شفیعی ۲۹ آبان ۱۴۰۱

      سلام.
      یعنی اجازه آپلود از url را از این دامین ها رو دارید

      پاسخ
  3. علی ۱۳ اسفند ۱۳۹۹

    آقا میشه یکی توضیح بده تو جنگو چجوری باید اینکارو بکنیم با ماژول django-tinymce انجام بدیم؟

    پاسخ
    1. حسن شفیعی ۱۳ اسفند ۱۳۹۹

      سلام.
      متاسفانه بنده با جنگو کار نکردم اطلاع ندارم به چه صورت میشه

      پاسخ
  4. mahan ۲۱ شهریور ۱۳۹۹

    سلام ، چطوری محتوا رو ذخیره کنم؟؟

    پاسخ
    1. حسن شفیعی ۲۱ شهریور ۱۳۹۹

      سلام.
      شما باید یک دکمه سابمیت ایجاد کنید و این TinyMCE رو داخل یک تگ form قرار بدید و بعد با زدن دکمه در سمت اسکریپت php عملیات ذخیره سازی در دیتابیس یا فایل را لحاظ کنید
      آموزش کار با فرم ها :
      https://netparadis.com/access-form-data-from-php/
      https://netparadis.com/php-tutorial-15-get-post-methods/

      پاسخ
      1. mahan ۲۱ شهریور ۱۳۹۹

        خیلی ممنون ، مشکلم حل شد.

        پاسخ
  5. جلالی ۱۶ شهریور ۱۳۹۹

    سلام این روش برای افزونه وردپرس TinyMCE هم جواب میده؟

    پاسخ
    1. حسن شفیعی ۱۶ شهریور ۱۳۹۹

      سلام. بله

      پاسخ
      1. جلالی ۱۶ شهریور ۱۳۹۹

        میشه بیشتر توضیح بدید برای افزونه وردپرس این کد های که فرمودید رو کجا قرار بدهیم؟

        پاسخ
      2. حسن شفیعی ۱۶ شهریور ۱۳۹۹

        باید مستقیم فایل های این افزونه رو تغییر بدید و ببینید در edit-post یا post new اضافه شده تغییرات رو لحاظ کنید و باید جاواسکریپت بلد باشید تا بتونید تغییرات رو لحاظ کنید

        پاسخ
  6. ندا فریدونی ۲۵ تیر ۱۳۹۸

    باعرض سلام و خسته نباشید.من از ادیتور tinymce در ادمین سایتم استفاده کردم مشکلی که دارم این که وقتی عکس را در textareaاپلود میکنم در صفحه سایتم عکس نمایش داده نمیشه چکارکنم که عکس با توضیحاتی که در text area نوشتم در صفحه ی سایتم درج ونمایش داده بشه ؟ البته عکس به همراه توضیحات در دیتابیسم ذخیره شده اما فقط توضیحات نمایش داده میشه و عکس فراخوانی نمیشه خواهشا راهنمایی بفرمایید.تشکر از شما.

    پاسخ
    1. حسن شفیعی ۲۵ تیر ۱۳۹۸

      سلام ممنون. اطلاعی ندارم به چه صورت است. باید در صفحه سایت آدرس عکس را بردارید و در مرورگر اجرا کنید ببینید چه آدرسی گرفته چون آدرس دهی تصویر در صفحه سایت اشتباه است.
      موفق باشید.

      پاسخ
دوره های آموزشی