Bir eşlenen networkdrive için bir web sunucusu bir dir kopyalayın

4 Cevap php

Ben veri homojenlik odaklanan üzerinde çalışıyorum bir PHP projesi için, belli bir dizin yapısı yönetilebilir.

Bir kullanıcı (ben tüm proje detayları ile sizi rahatsız etmez) bu dizin yapısının bir eşlenen ağ sürücüsüne kopyalanması gereken bir nesne yaratan bir süreç tamamlandıktan sonra.

Kullanıcıların farklı driveletter eşleştirilmiş networkdrive olabilir beri, ben (FileSystemObject) sürücüharfi almak için javascript kullanıyorum.

Bu, tüm Tamam. Ama şimdi zor kısmı geliyor. Nasıl benim Directorystructure kopyalamak mümkün duyuyorum, bu networkdrive, ben yapıyorum webapp tarafından webserver başardı?

Ben yeni klasörler oluşturmak için FSO kullanabilirsiniz biliyorum, benim sorunum javascript PHP özyinelemeli Directorystructure geçmek için nasıl.

4 Cevap

HTTP kullanarak bir dizin yapısını kopyalamak olamaz yana dizin bilgilerini tutacak bir yardımcı nesnesi oluşturmak zorundasınız. Ben JS JSON yoluyla ihraç dizisini kullanabilirsiniz. Dizi yapısı bu gibi olacaktır:

array(1) {
  ["/"]=>
  array(5) {
    ["dir1"]=>
    array(3) {
      ["dir1_1"]=>
      array(1) {
        ["file1.txt"]=>
        string(30) "http://domain/dir1_1/file1.txt"
      }
      ["file1.txt"]=>
      string(28) "http://domain/dir1/file1.txt"
      ["file2.txt"]=>
      string(34) "http://domain/dir1/file2.txt"
    }
    ["dir2"]=>
    array(1) {
      ["file1.txt"]=>
      string(28) "http://domain/dir2/file1.txt"
    }
    ["file1.txt"]=>
    string(23) "http://domain/file1.txt"
    ["file2.txt"]=>
    string(23) "http://domain/file2.txt"
    ["file3.txt"]=>
    string(23) "http://domain/file3.txt"
  }
}

İsteğe bağlı bazı trafik kaydetmek için anahtar değerlerden URL'leri assable olabilir, ama ben bu ihtiyacınız durum olmadığını düşünüyorum.

Eğer JS nesneyi var bir kez sadece dosyaları tek tek kopyalamak.

HTTP "dizin yapısı" gibi bir şey tanımlamak değil; dosya sistemi HTTP tepkilerin herhangi bir haritalama en iyi rastlantısaldır.

? Onun bir uzantısı JScript - JavaScript ne ECMAScript'te hiçbir FileSystemObject yoktur.

Ben (bu söz ediyorum eğer yararlı olurdu) bir MS Windows işletim sistemi üzerinde geliştirmeye çalışıyoruz ki bu da tahmin ediyorum.

Ayrıca, orada bir weserver indirilen bir JScript yerel dosya sistemine erişim mümkün olmamalıdır nedeni bir sürü - MSIE varsayılan ayarları buna izin vermez ve başka bir tarayıcıda çalışmaz.

Dizin yapısı nerede ikamet ediyor? Web sunucusu üzerinde? Tarayıcı istemci üzerinde? Yerine JScript'e PHP ayrıntıları geçmek için nasıl gibi soru eski ima - öyleyse neden PHP kullanarak üzerinden dosyaları kopyalamak değil? Hatta güvenlik sorunlarını göz ardı istemci üzerinde uygulanması çok daha kolay olacak.

Ama sorunuza cevap vermek için:

 $i=0;
 print "<script>\nvar filesToCopy=New Array();\n";
 foreach ($file_to_copy as $f) {
     print "filesToCopy[$i]='$f';\n";
     $i++;
 }
 print "your_file_copy_js(filesToCopy);\n</script>\n";

C.

Ben bunu anladım. Ben ardışık, benim Directorystructure okumak bir dizi oluşturmak, bu dizi boyunca döngüye ve birlikte yeni dizinleri oluşturmak için FileSystemObject kullanabileceğiniz bir javascriptfunction koyduk.

Sadece olumsuz dosyalarına içerik eklemek mümkün değildi olmasıdır. Ama bu bir sorun o kadar değil. Petr Peller, benim çözüm kurşun size öneri sayesinde oldu.