Потоковая передача файлов

Discussion in 'PHP' started by tch, 3 Jan 2012.

  1. tch

    tch New Member

    Joined:
    11 Jun 2011
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    Интересно как можно организовать проброс файла, допустим из html формы (через jquery или флеш) к скрипту так чтоб он передал дальше через http или ftp файл, только без закачки его целиком на сервак.
     
  2. Ataman

    Ataman New Member

    Joined:
    7 Dec 2011
    Messages:
    20
    Likes Received:
    1
    Reputations:
    0
    Тоесть ты хочешь написать форму которая будет отправлять на фтп или хттп файл не полностью? Я только знаю чтобы полностью ;) . Ну впринципе выбрав большой файл и закрыв бразуер ты можешь загрузить его не полностью (но он врятли сохраниться)
    Ну ты в принципе можешь закачать через фтп:

    PHP:
    FTP access parameters
    $host 
    'ftp.example.org';
    $usr 'example_user';
    $pwd 'example_password';
     
    // file to move:
    $local_file './example.txt';
    $ftp_path '/data/example.txt';
     
    // connect to FTP server (port 21)
    $conn_id ftp_connect($host21) or die ("Cannot connect to host");
     
    // send access parameters
    ftp_login($conn_id$usr$pwd) or die("Cannot login");
     
    // turn on passive mode transfers (some servers need this)
    // ftp_pasv ($conn_id, true);
     
    // perform file upload
    $upload ftp_put($conn_id$ftp_path$local_fileFTP_ASCII);
     
    // check upload status:
    print (!$upload) ? 'Cannot upload' 'Upload complete';
    print 
    "\n";
     
    /*
    ** Chmod the file (just as example)
    */
     
    // If you are using PHP4 then you need to use this code:
    // (because the "ftp_chmod" command is just available in PHP5+)
    if (!function_exists('ftp_chmod')) {
       function 
    ftp_chmod($ftp_stream$mode$filename){
            return 
    ftp_site($ftp_streamsprintf('CHMOD %o %s'$mode$filename));
       }
    }
     
    // try to chmod the new file to 666 (writeable)
    if (ftp_chmod($conn_id0666$ftp_path) !== false) {
        print 
    $ftp_path " chmoded successfully to 666\n";
    } else {
        print 
    "could not chmod $file\n";
    }
     
    // close the FTP stream
    ftp_close($conn_id);
    Или 80:
    PHP:
    <?php
     
    if ((($_FILES["file"]["type"] == "image/gif")
     || (
    $_FILES["file"]["type"] == "image/jpeg")
     || (
    $_FILES["file"]["type"] == "image/pjpeg"))
     && (
    $_FILES["file"]["size"] < 20000))
       {
       if (
    $_FILES["file"]["error"] > 0)
         {
         echo 
    "Return Code: " $_FILES["file"]["error"] . "<br />";
         }
       else
         {
         echo 
    "Upload: " $_FILES["file"]["name"] . "<br />";
         echo 
    "Type: " $_FILES["file"]["type"] . "<br />";
         echo 
    "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
         echo 
    "Temp file: " $_FILES["file"]["tmp_name"] . "<br />";

         if (
    file_exists("upload/" $_FILES["file"]["name"]))
           {
           echo 
    $_FILES["file"]["name"] . " already exists. ";
           }
         else
           {
           
    move_uploaded_file($_FILES["file"]["tmp_name"],
           
    "upload/" $_FILES["file"]["name"]);
           echo 
    "Stored in: " "upload/" $_FILES["file"]["name"];
           }
         }
       }
     else
       {
       echo 
    "Invalid file";
       }
     
    ?>
    Форма(пример! не надо копипастить - сам пиши):
    PHP:
    <form enctype="multipart/form-data" action="uploader.php" method="POST">
    <
    input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    Choose a file to upload: <input name="uploadedfile" type="file" /><br />
    <
    input type="submit" value="Upload File" />
    </
    form>
     
  3. tch

    tch New Member

    Joined:
    11 Jun 2011
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    черт так и знал =) что не поймут, данке за советы выше.

    Ну вот допустим есть у меня 5 учетных записей на ютюбе, есть видео роллик, который я заливаю (весит он 500 Мб места на серваке 200 мб.) как сделать так чтоб на серваке он одновременно грузился на 5 потоков не используя все дисковое пространство!

    Тут фишка в том чтобы пробросить загрузку на другой сервак, но вижу что не так все просто =) буду гуглить.
     
    #3 tch, 3 Jan 2012
    Last edited: 3 Jan 2012
  4. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    Зачем тогда в этой всей схеме сервер?
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    [stranger] приблизительно затем же, зачем и прокси.

    tch веб сервер вам не позволит такого сделать. Но вам ничто не мешает написать демона на другом порту, который будет принимать запросы от клиентов и прозрачно редиректить туда, куда вам нужно "налету".
     
    _________________________