نمایش نتایج 1 تا 8 از 8

نام تاپیک: سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

  1. #1

    Question سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

    با عرض سلام و خسته نباشید خدمت شما دوستان عزیز ...

    من در کدنویسی سایت بدلیل اینکه سرعت سایت بالاتر باشه یک هاست خیلی قدرتمند با سرعت و کیفیت بالا برای خود سایت دارم و یک هاست عادی با فضای زیاد برای ذخیره فایل ها؛ اینجوری هم هزینه کمتر میشه و هم اینکه سرعت سایت بالاتر هست چون هاست کم حجم اما با کیفیت بالا برای خود سایت گرفتم. (اینجا برای اینکه مشخص باشه اون هاست حجم بالا که میخوام فایل ها در اون آپلود بشه را با نام "هاست فایل" نوشتم)

    در زمان آپلود در سمت سرور ابتدا فرمت فایل رو با یک لیست فرمت های مجاز چک میکنم، اگر اوکی نبود از آپلود اون فایل صرف‌نظر میشه و بعد از اون حجم فایل رو هم بررسی میکنم که مناسب باشه و کم و زیاد نباشه؛ حالا مشکل من در انتقال فایل‌های آپلود شده به "هاست فایل" این هست که در سایت نمیتونم فقط فایل رو بدون تغییرات به هاست فایل انتقال بدم مثلاً بصورت ftp و ... و پس از آپلود (یک فایل باشد یا بصورت گروهی و چندین فایل باشد فرقی ندارد و هر دو به یک شکل زیپ و ذخیره میشوند) تمام فایل ها رو با کلاس ZipArchive زیپ میکنم و ذخیره میکنم و بعدش اسم و مسیر رو توی یک جدول در دیتابیس ذخیره میکنم و شناسه ردیف رو میگیرم و برمیگردونم؛ اما با استفاده از ftp نمیتونم این زیپ کردن رو انجام بدم و حتماً باید از روش دیگه ای مثل curl یا ... برای این کار استفاده بشه

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

    if(isset($_FILES['attachment']['tmp_name'])){
    $Zip=new ZipArchive();
    if($Zip->open($Path.$ZipName,false?ZIPARCHIVE::OVERWRITE:Z IPARCHIVE::CREATE)===true){
    for($i=0;$i<count($_FILES['attachment']['tmp_name']);$i++){
    $iName=$_FILES['attachment']['name'][$i];
    $iSize=$_FILES['attachment']['size'][$i];
    $iType=strtolower(pathinfo($iName,PATHINFO_EXTENSI ON));
    // بررسی فرمت فایل اگر اوکی بود ادامه میده
    // بررسی حجم فایل اگر اوکی بود ادامه میده
    if(move_uploaded_file($_FILES['attachment']['tmp_name'][$i],($Path.$RandomFileName))){
    $Zip->addfile($Path.$RandomFileName,basename($h));
    // حذف فایل پس از انتقال به فایل زیپ
    }
    // محدودیت حداکثر ارسال 10 فایل آپلود شده موفق
    }
    }
    $Zip->close();
    if($ZipItem===0){$attachment=0;}else{
    // ذخیره اطلاعات در دیتایس و دریافت شناسه رکورد
    $attachment='شناسه رکورد ذخیره شده';
    }
    }else{$attachment=0;}


    بخش های اضافه در کد بالا رو حذف کردم که مرتب تر باشه و راحت تر بتونید کد را بررسی کنید. حالا وقتی بخوام فایل‌ها رو به یک سرور دیگر انتقال بدم دو راه وجود داره:

    1- راه اول انتقال فایل زیپ نهایی به سرور جدید : این کار خوب نیست چون کاربر در زمان آپلود یک مرتبه باید منتظر بمونه تا فایل آپلود بشه و بعد همچنان منتظر بمونه تا فایل به یک سرور دیگر آپلود و منتقل شود و زمان زیادی کاربر معطل خواهد شد (مثلاً با متد ftp انتقال انجام شود و ...)

    2- فایل‌ها را بصورت خام بدون اعمال هیچ تغییری (یعنی فایل‌هایی که پست شده) را به یک سرور دیگر انتقال دهم و در آن سرور تغییرات لازم مثل بررسی و تغییر نام و زیپ کردن انجام بشه و مشکل من دقیقاً همینه که چطور میتونم یک فایل PHP در سرور دیگه داشته باشم و این فایلها رو برای اون بفرستم که با استفاده از کد بالا در سرور جدید آپلود و تغییرات و زیپ کردن انجام بشه ؟ متدهای ftp فقط فایل رو منتقل می‌کنند و امکان ارسال اطلاعات به یک فایل php در یک سرور دیگر در ftp وجود ندارد

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

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

    اگر با روش دیگه ای انجام میشه و یا اینکه راه های بهتری برای این انتقال وجود دارد من رو راهنمایی کنید لطفاً

    ممنونم از شما

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

    برای روش 1 - شما میتونی یک کرون جاب بزاری که فایل ها رو انتقال بده رو سرور دوم دیگه اینجوری نیاز نیست کابر منتظر بمونه
    برای روش دو - من درست متوجه نشدم چی گفتی ... ولی اگه منظورت اینه که وبسایت مستقیما فایل ها رو بر روی هاست فایل بارگزاری کنه که به نظر من کار درستی نیست ... ولی خب راهش اینه که تو و وبسایتت فرمی که کاربر فایل رو آپلد میکنه به هاست فایل ارسال کنه داده ها رو ... وگرنه تنها راهت اینه که بیاد رو سرور اول و بعد با ftp منتقل بشه به سرور دوم


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

  3. #3

    نقل قول: سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

    سلام

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

  4. #4

    نقل قول: سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

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

    plague راهی که فرمودید مناسب نیست چون پس از ثبت فرم و آپلود کاربر به صفحه ای منتقل میشه که اطلاعات ارسالی خودش و فایل پیوست و ... رو میتونه مشاهده کنه؛ حالا اگر فایل در هاست اصلی ذخیره بشه و بعد از یک یا چند دقیقه به هاست فایل منتقل بشه، یا باید از ارائه لینک دریافت فایل به کاربر جلوگیری بشه و پس از منتقل شدن لینک نمایش داده بشه که جالب نیست و کاربر باید منتظر بمونه
    اگر لینک هاست اصلی جهت دانلود داده بشه و پس از انتقال لینک دانلود از هاست فایل ارائه بشه؛ اگر کاربر صفحه رو رفرش نکنه پس از انتقال فایل همچنان لینک هاست اصلی رو میبینه و نمیتونه فایل رو دانلود کنه

    باید یک راهی باشه که در سمت سرور بجای استفاده از ftp که فایل رو انتقال میده، خود فیلد آپلودی که پست شده رو منتقل کنه به هاست فایل
    به غیر از این باشه نامناسب میشه

    البته به فکرم رسید که بخش آپلود را آجاکس کنم که در زمان انتخاب فایل در فرم، پس از انتخاب فایل آپلود بشه به هاست فایل ولی اونجوری مشکلات خاص خودش رو داره و نمیخوام به اون شکل باشه

  5. #5
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

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

  6. #6

    نقل قول: سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

    حجم فایل ها متغیر هست از 1 مگابایت آپلود میشه تا 100 مگابایت اما میانگین بخوایم بگیریم حجم متوسط 40 مگابایت هست
    حجم 40 مگ خیلی نیست اما تعداد زیاد در روز این آپلود و ارسال انجام میشه به همین دلیل دنبال یک راه مناسب براش هستم

  7. #7

    نقل قول: سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

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

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

  8. #8

    نقل قول: سوال و نیاز به راهنمایی در ارتباط با کد آپلود فایل به شکل زیر در PHP

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

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

    یکی از دوستانم گفت با curl میشه دز سمت سرور زمانی که کاربر فرم را ثبت کرد فایل های دریافتی رو فرستاد برای هاست فایل و نیازی به ftp نیست اما کدش رو نداشت و گفت یا از این استفاده کن:

    curl_setopt($ch,CURLOPT_INFILESIZE,filesize($files  ));
    curl_setopt($ch,CURLOPT_INFILE,$fopen);


    یا از این روش:

    curl_file_create(...);


    اما مورد اول چون از fopen استفاده میکنه فکر کنم قابل استفاده نباشه برای کار من و روش دوم را هم اصلاً نمیدونم چطوریه و گفت curl_file_create کن و بصورت array فایل ها رو با متد post با curl باید بفرستی

    کسی میتونه به من در این زمینه کمک کنه ؟

تاپیک های مشابه

  1. سوال: آیا راهی هست که بدون اینکه فرم بالایی پایین فرم زیرش بره فوکوس رو به فرم زیرش منتقل کنه؟
    نوشته شده توسط mbshareat در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: سه شنبه 29 فروردین 1391, 09:56 صبح
  2. سوال در مورد دانلود فولدر و زیبایی فرم×
    نوشته شده توسط St4r-S4t در بخش برنامه نویسی در 6 VB
    پاسخ: 10
    آخرین پست: دوشنبه 17 بهمن 1384, 14:22 عصر
  3. پاسخ: 1
    آخرین پست: چهارشنبه 06 خرداد 1383, 13:24 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •