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

نام تاپیک: Remote Uploader

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    Remote Uploader

    سلام دوستان...
    می خوام یه کد بنویسم برای آپلود فایل، اما درصد انجام کار دیده بشه مثلا داخل یه تگ <p></p>؛
    ترجیحا می خوام کارا داخل یه فایل php باشه.
    تا یه جایی کدشو نوشتم. اگه می شه کمک کنید تا کامل شه. باید از AJAX استفاده کنم؟ می شه بگید کلا باید چی کار کنم؟ ایده ای دارید؟ توضیحی...؟
    فعلا کاربرپسندی کار مهم نیست.

    <?php
    if (empty($_REQUEST)){
    //submit file info and ready to go!
    echo '<html>', PHP_EOL;
    echo '<head>', PHP_EOL;
    echo '<title>upload.php</title>', PHP_EOL;
    echo "<script type='text/javascript'>", PHP_EOL;
    echo "", PHP_EOL;
    echo "", PHP_EOL;
    echo "", PHP_EOL;
    echo "</script>", PHP_EOL;
    echo '</head>', PHP_EOL;
    echo '<body>', PHP_EOL;
    echo "<form action='upload.php?function=upload' method='get'>", PHP_EOL;
    echo "<input type='text' name='url' />", PHP_EOL;
    echo "<input type='submit' name='submit' value='Upload' />", PHP_EOL
    echo '</form>', PHP_EOL;
    echo "<p id='progress'>0</p>", PHP_EOL;


    echo '</body>', PHP_EOL;
    echo '</html>', PHP_EOL;

    }else{
    //upload file / get downloading file info
    $function = $_REQUEST['function'];
    switch($function){
    $url = $_REQUEST['url'];
    $path_parts = pathinfo($url);
    $filename = $path_parts['filename'];
    case 'upload':
    copy($url,$filename);
    break;
    case 'getinfo':
    $dfilesize = filesize($filename);
    $sfilesize = retrieve_remote_file_size($url);
    $progress = $dfilesize / $sfilesize * 100;
    echo progress;
    break;
    }
    }

    function retrieve_remote_file_size($url){
    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, TRUE);
    curl_setopt($ch, CURLOPT_NOBODY, TRUE);

    $data = curl_exec($ch);
    $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

    curl_close($ch);
    return $size;
    }

    ?>

  2. #2

    نقل قول: Remote Uploader

    شما با Ajax نی تونید فایل آپلود کنید
    برای اینکار بیشتر از Flash استفاده میکنند.(تا جایی که من میدونم)
    برای نمونه می تونید این رو ببینید
    uploadify.com

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: Remote Uploader

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

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: Remote Uploader

    یه چیز دیگه به ذهنم رسید، به جای این که با AJAX درصد پیشرفت کار رو از سرور بپرسیم، می تونیم خودمون درصد پیشرفت کار رو با چک کرد حجم فایل مقصد با داشتن URL اش به دست بیاریم...

  5. #5

    نقل قول: Remote Uploader

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

  6. #6
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: Remote Uploader

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

  7. #7

    نقل قول: Remote Uploader

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

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: Remote Uploader

    خوب من سعی کردم اینو بنویسم:
    <html>
    <head>
    <title>upload.php</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script language='javascript' type="text/javascript">
    alert('2e2e');
    function do_upload()
    {
    alert('it works...!');
    var source_url=document.getElementById('url').value;
    //ajax request for remote upload
    $.ajax({
    type: "POST",
    url: "http://ektoplazm.ir/files/upload2.php",
    data: { url: source_url, submit: "Upload" }
    }).done(function( msg ) {
    alert( "Data Saved: " + msg );
    });
    //continue : update upload status
    setInterval('update_upload_status()',512);
    }

    function update_upload_status(){
    alert('upload is starting...');
    var source_url=document.getElementById('url').value;
    var destination_url=source_url.substring(source_url.la stIndexOf('/')+1);
    var sfilesize;
    var dfilesize;
    var request;

    request = $.ajax({
    type: "HEAD",
    url: $("#"+source_url).val(),
    success: function () {
    sfilesize=request.getResponseHeader("Content-Length"));
    }

    request = $.ajax({
    type: "HEAD",
    url: $("#"+destination_url).val(),
    success: function () {
    dfilesize=request.getResponseHeader("Content-Length"));
    }

    var progress=dfilesize/sfilesize*100;
    if (progrss==100){
    document.getElementById('progress').innerhtml='don e!';
    }else{
    document.getElementById('progress').innerhtml=prog ress;
    }


    }


    </script>
    </head>
    <body>
    <form action='' method="post">
    <input name="url" size="50" />
    <input name="upload" type="button" value='upload' onclick="javascript:do_upload();" />
    </form>
    <p id='progress'>progress</p>
    </body>
    </html>
    <?php

    // maximum execution time in seconds
    set_time_limit (24 * 60 * 60);

    if (!isset($_POST['submit'])) die();

    // folder to save downloaded files to. must end with slash
    $destination_folder = '';

    $url = $_POST['url'];
    $newfname = $destination_folder . basename($url);

    echo $url;

    $file = fopen ($url, "rb");
    if ($file) {
    $newf = fopen ($newfname, "wb");

    if ($newf)
    while(!feof($file)) {
    fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
    }
    }

    if ($file) {
    fclose($file);
    }

    if ($newf) {
    fclose($newf);
    }

    ?>


    اما نمی دونم چرا کار نمی کنه... کد جاوااسکریپتش اصلا اجرا نمی شه...
    آخرین ویرایش به وسیله IamOverlord : دوشنبه 05 تیر 1391 در 20:21 عصر

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    35°41′46″N 51°25′23″E
    سن
    28
    پست
    1,545

    نقل قول: Remote Uploader

    فهمیدم مشکل از این قسمت در تابع ()update_upload_status هست:
          request = $.ajax({
    type: "HEAD",
    url: $("#"+source_url).val(),
    success: function () {
    sfilesize=request.getResponseHeader("Content-Length"));
    }

    request = $.ajax({
    type: "HEAD",
    url: $("#"+destination_url).val(),
    success: function () {
    dfilesize=request.getResponseHeader("Content-Length"));
    }

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

  1. Remote URL upload
    نوشته شده توسط modirmasool در بخش توسعه وب (Web Development)
    پاسخ: 0
    آخرین پست: پنج شنبه 04 شهریور 1389, 00:32 صبح
  2. Upload ASP.NET Pages
    نوشته شده توسط Abbas Arizi در بخش ASP.NET Web Forms
    پاسخ: 12
    آخرین پست: چهارشنبه 06 مهر 1384, 10:14 صبح
  3. Remote Control
    نوشته شده توسط b_mohammadpoor در بخش امنیت در شبکه
    پاسخ: 4
    آخرین پست: جمعه 21 شهریور 1382, 05:52 صبح
  4. upload کردن فایل
    نوشته شده توسط ilovelinux در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 07 مرداد 1382, 01:29 صبح
  5. Registering DLLs on remote server !!
    نوشته شده توسط Farhad.B.S در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: یک شنبه 22 تیر 1382, 13:35 عصر

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

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