یافتن میزان آپلود فایل

clove-pink

کاربر فعال
سلام
دوستام من یک فایلی رو از flash به php فرستادم و خواستم آپلود کنم اما می خوام یه progreess bar واسه آپلود تو فلش ایجاد کنم برای این منظور لازم دارم که ازphp میزان اندازه ای که الان دانلود شده و میزان کل فایل دانلودی رو بگیرم.
خودم جستجو کردم یه apc فریم ورک دیدم و ازش استفاده کردم .می خوام ببینم راهی دیگه نداره به جز APC؟؟؟؟؟
 

clove-pink

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

کد:
//Class to store read info
class ReadStatus{
    var $is_dir_error = 0;
    var $open_dir_error = 0;
    var $active = 0;
    var $uploaded_files = 0;
    var $bytes_uploaded = 0;
}

// Return the current size of the $_GET['temp_dir_sid'] - flength file size.
function GetBytesRead($temp_dir, $upload_id){
    $read_status = new ReadStatus;
    $temp_upload_dir = $temp_dir . $upload_id . '.dir';
    $flength_file = $temp_dir . $upload_id . '.dir/' . $upload_id . '.flength';

    if(is_dir($temp_upload_dir) && file_exists($flength_file)){
        if($handle = opendir($temp_upload_dir)){
            while(false !== ($file_name = readdir($handle))){
                if(($file_name != '.') && ($file_name != '..') && ($file_name != $flength_file)){
                    $read_status->bytes_uploaded += filesize($temp_upload_dir . '/' . $file_name);
                    $read_status->uploaded_files++;
                }
            }
            closedir($handle);

            $read_status->active = 1;

            if($read_status->uploaded_files > 0){ $read_status->uploaded_files -= 1; }
        }
        else{ $read_status->open_dir_error = 1; }
    }
    else{ $read_status->is_dir_error = 1; }

    return $read_status;
}
 

clove-pink

کاربر فعال
ای بابا...
محض رضای خدا یکی ما رو دریابه..
من روش استفاده از APC و ارتباطش با فلش رو فهمیدم....مشکل حل شد اما مرحله آخر این هست که من چه جوری این frame work رو روی هاست قرار بدم؟؟؟؟
کسی می دونه؟؟؟این extension رو چه جوری فعال کنم؟؟
 

BehrouzPc

پــــادشــاه فــلــــش
ای بابا...
محض رضای خدا یکی ما رو دریابه..
من روش استفاده از apc و ارتباطش با فلش رو فهمیدم....مشکل حل شد اما مرحله آخر این هست که من چه جوری این frame work رو روی هاست قرار بدم؟؟؟؟
کسی می دونه؟؟؟این extension رو چه جوری فعال کنم؟؟
اگر دستری به سرور و تنظیمات نصب و ... ندارید می بایست توسط مدیریت هاستینگ برای شما انجام شود ؛ زیرا نیاز به دسترسی به whm و یا مدیریت کامل دارد.
موفق و پیروز باشید.
 
آخرین ویرایش:

clove-pink

کاربر فعال
مرسی از جوابتون
من به پشتیبانی گفتم اما می گه که ما را ه نمی ندازیم:snap: واسه اینکه اگه این کار رو کنیم zend به درستی کار نمی کنه و APC باهاش وقف نداره:-?
 

clove-pink

کاربر فعال
من کد بالا رو بررسی کردم می خوام بدونم که اون قسمتی که id و مسیر temp رو می گیره قضیه اش به چه شکله؟؟؟
من تو local فایلی رو که واسه آپلود می فرستم و بررسی می کنمش یه همچین چیزی هست:
کد:
C:\wamp\tmp\phpBC70.tmp
ولی تو سرورم که می زارم اصلا پسوند نداره و اینجوری هست:
کد:
/tmp/phpgJxpTV
موقعی هم که چک می کنم هست تو پوشه tmp مقدار false بر می گردونه در حالی که تو local می گه هست !!!چرا؟

راجع به سیستم آپلود کردن تو php من فکر می کنم که اون فایلی که بهش داده می شه اول می ره تو temp بعد که کامل آپلود شد انتقال پیدا می کنه به جایی که ما تو تابع move_uploaded_file بهش می گیم.

حالا قضیه اینجاست که:
1-اون فایلی که الان داره تو temp آپلود می شه رو پیدا کنیم که من با $FILES تو local تونستم اما تو هاست نشد.
2-بعد از پیدا کردنش مرتب سایزش رو بخونم تا معلوم شه چقدر آپلود شده.

سوال من اینه که چرا وقتی من $_FILES['Filedata']['tmp_name'] را بررسی می کنم که فایلش موجود هست یا نه ، تو local می گه هست اما تو سرور می گه نیست؟؟؟
من چه جوری با فایلی که تو temp داره آپلود می شه دسترسی پیدا کنم؟
 

BehrouzPc

پــــادشــاه فــلــــش
فکر می کنم مربوطه به سطح دسترسی به آن پوشه باشد
در ضمن شما تنها در صورتی می توانید به پوشه temp درسترسی پیدا کنید که نهایتا در root باشد و مراحل و پوشه هایی که خارج از root باشند را نمی توانید توسط کد دسترسی داشته باشید ( به دلایل امنتیی)
 

clove-pink

کاربر فعال
ما تو هر پوشه ای یه temp جداگانه داریم؟؟(ببخشید اگه سوال های من مسخرست چون اولین بارم هست)
من فایل هام رو تو root می زارم ببینم چی می شه؟؟
سطح دسترسی temp هم 755 بود
مرسی
 
آخرین ویرایش:

BehrouzPc

پــــادشــاه فــلــــش
خوب اگه منظورتون اون فایل هست ، احتمال زیاد به دلیل سطح دسترسی هست یا محدودیت اعمال شده امنیتی از طرف سرور.
البته با دسترسی که فرمودید اجازه خواندن وجود دارد ولی برای تست روی 775 یا 777 قرار دهید و تست کنید
از اون لحاظ فرقی نمی کنه ، منظور این بود که نمیشه به temp ی که خارج از root هست دسترسی داشت ، بقیه موارد فرقی ندارد که داخل پوشه ای باشد یا خیر

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

clove-pink

کاربر فعال
منظور شما از root همان www هست؟
من فایلم تو یه پوشه ای داخل www بود که اونها رو به www منتقل کردم اما درست نشد.
اگه اینجوری باشه که پوشه tmp خارج از www هست و کلیه فایلها در www!!!!!!

یعنی ما اصلا به tmp نمی تونیم دسترسی پیدا کنیم؟؟؟
 

clove-pink

کاربر فعال
آقا بهروز می گم فکر کنم این دسترسی به tmp داره چون من لیست فایل های توی tmp رو گفتم لیست کنه و کرد که این بود:
کد:
file name:sess_8f954d74de4786114971c4b3e47f0627file name:sess_a0d974260d46b012f0bd05cd5703f57bfile name:sess_c3634a6d8da334fe96644c335dfa41affile name:sess_736a82a790f800d505cf195aec222130file name:sess_402c8a5bc437b00bc46bb5d3536f6b4afile name:sess_01cdca4e408f048fca46088d7a2cb20cfile name:sess_5c087d0fb93a2759944f496b67fddfe8file name:sess_b60e41e25ef809d81b9e5887828884a9file name:sess_ca33386454405bca25c120ef821de204file
ولی اون فایلی که من آپلودش کردم اینه و تو لیست بالا نیست :
کد:
phpmQLpkHfile

سرچ کردم:

The problem was that while the browser uploads the file, there is no way to know which file is this in the servers temp folder. That means you can't check the filesize and because of that there is no way to give the user information about the progress of the upload.

بنابراین انگار نمی شه فهمید الان کدوم یک از اینها ، اون فایلی هست که داره آپلود می شه....
اینجا یه توضیحی داده ولی خیلی قمر در عقربه واسه من که با اینا کار نکردم
کد:
http://thedeveloper.me/tag/javascript
 
آخرین ویرایش:

BehrouzPc

پــــادشــاه فــلــــش
فکر می کنم روی سرور فایل ها بر مبنای سشن کاربر کد می شن و دسترسی با روشی که شما استفاده می کنید به اونها امکان پذیر نیست
///
شاید این مورد به شما کمک کند

http://code.google.com/p/swfupload
 

clove-pink

کاربر فعال
آقا بهروز از این FileRefrence استفاده کرده ،من ولی تو کارم نمی خوام user فایل انتخاب کنه و یه فایلی که من تو library داخل فایل flash گذاشتم آپلود شه..بد بختی اینه که data مربوط به filerefrence که دارم read only هست وگرنه اطلاعات باینری مو می دادم به file refrence و بقیه اش ok می شد.بازم ممنون از کمکت.
 

clove-pink

کاربر فعال
سلم
آقا بهروز نمی شه
نمی شه اگه فایل باینری داشته باشیم یه filerefrence ایجاد کنیم مگه اینکه داده ها رو با پست ارسال کنیم که من کردم این کارو ولی php اطلاعات upload نمیده من خواستم filereference رو شبیه سازی کنم که نشد.
من یه سورس پیدا کردم با php وcgi هست اما من از بعضی از بخش هاش سر در نیاوردم.از دوستام می خوام اگه امکان داره کمک کنن.
اولین چیز normal_target هست.من سرچ کردم اما می شه دوستان بگن این چه کاری انجام میده؟؟؟
دوم اینکه تو متد پست که داریم:
کد:
action="/cgi-bin/upload.cgi?sid=<?php echo $sid; ?>&target=<?php echo normal_target('receive.php') ?>"

اون id که می فهمم قضیه اش چیه اما اون target چیه دیگه؟؟
فعلا اینجاش گیر کردم.
از دوستان اگه توضیح بدن کد بالا چی کار می کنه ممنون می شم..(تا بد سوالای بعدی رو بپرسم)
مرسی

کل کدهایی هم که کار upload میکنه رو پیوست کردم.
 

پیوست ها

  • tesupload.rar
    16.9 کیلوبایت · بازدیدها: 4

clove-pink

کاربر فعال
ای بابا!!!!
چرا اینجا هیچ کس ما رو تحویل نمی گیره؟؟؟؟؟
من جای اشتباهی post گذاشتم؟؟نکنه این مبحث ربطی به php نداره؟؟؟
 

clove-pink

کاربر فعال
برای یافتن میزان آپلود php به تنهایی کاری نمی کنه از زبان perl استفاه کردم،مشکل حل شد.
 

جدیدترین ارسال ها

بالا