Скопируйте Dir с Php на ПК клиента - PullRequest
0 голосов
/ 28 марта 2012

Я пытался скопировать любой каталог с моего сервера на компьютер клиента, но я не знаю, как это возможно: S ... как пример ... У меня есть domain.com/Info, и я хочу скопировать эту папку Info с содержимым, чтобы Я копирую Info и копирую в другую папку, но на моем сервере ... но я не знаю, как копировать на компьютер клиента, смысл моей идеи в том, что если любой клиент хочет использовать мою сеть, может скопировать эту папку в его рабочий стол Any Idea ?? мой код для копирования dir на моем сервере

function full_copy( $source, $target ) {
    if ( is_dir( $source ) ) {
        @mkdir( $target );
        $d = dir( $source );
        while ( FALSE !== ( $entry = $d->read() ) ) {
            if ( $entry == '.' || $entry == '..' ) {
                continue;
            }
            $Entry = $source . '/' . $entry; 
            if ( is_dir( $Entry ) ) {
                full_copy( $Entry, $target . '/' . $entry );
                continue;
            }
            copy( $Entry, $target . '/' . $entry );
        }

        $d->close();
    }else {
        copy( $source, $target );
    }
}
$s = '/Appserv/www/CpVela/Info';
$des = '/Info/';
full_copy($s,$des);

новая редакция

хорошо, я пытаюсь создать и загрузить .zip, но file.zip, который создает мой код, пуст и поврежден: S

мой код такой

include "libs/pclzip-2-8-2/pclzip.lib.php";
require("libs/zipfile.php");

/* creates a compressed zip file */
function create_zip($files = array(),$destination = '',$overwrite = false) {
  if(file_exists($destination) && !$overwrite) { return false; }
  $valid_files = array();
  if(is_array($files)) {
    foreach($files as $file) {
      if(file_exists($file)) {
        $valid_files[] = $file;
      }
    }
  }
  if(count($valid_files)) {
    $zip = new ZipArchive();
    if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
      return false;
    }
    foreach($valid_files as $file) {
      $zip->addFile($file,$file);
    }
    $zip->close();
    return file_exists($destination);
  }
  else
  {
    return false;
  }
}
$array = array();
function full_copy( $source, $target ) {

    if ( is_dir( $source ) ) {
        @mkdir( $target );
        //$archivo  = new zipfile();
         $archive = new PclZip('zipfile.zip');
        $d = dir( $source );
        while ( FALSE !== ( $entry = $d->read() ) ) {
            if ( $entry == '.' || $entry == '..' ) {
                continue;
            }
            $Entry = $source . '/' . $entry; 
            if ( is_dir( $Entry ) ) {
                full_copy( $Entry, $target . '/' . $entry );
                continue;
            }
            if(count($array) > 1 ){
                array_push($array, $Entry);
                }else{
                    $array[0] = $Entry;
                    }
        //  $archivo->add_file($Entry,$Entry);
             //$v_list = $archive->add($Entry, PCLZIP_OPT_REMOVE_PATH, 'dev');
            //copy( $Entry, $target . '/' . $entry );
        }

        $d->close();


    }else {
        copy( $source, $target );
    }
}

$s = '/Appserv/www/CpVela/Info';
$des = '/Appserv/www/CpVela/';
full_copy($s,$des);
create_zip($array,'zipfile.zip');
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=zipfile.zip");
echo $zipfile->file(); 

1 Ответ

2 голосов
/ 28 марта 2012

Вы не можете сделать это из веб-браузера.PHP работает на сервере, где выполняется веб-страница, и больше нигде.

Если вы хотите разрешить клиенту делать это, вам нужно использовать другой инструмент или другой язык.Или просто создайте zip-файл, который он может загрузить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...