![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 22.06.2008 Skąd: Rabka-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Próbuję funkcją fopen() otworzyć plik z podmontowanego zasobu sieciowego (komputer z systemem Windows), który posiada w swej nazwie apostrof ( ' ), w celu skopiowania go na dysk lokalny komputera. Przykład użycia: Kopiuję dwa pliki: jeden który nie zawiera apostrofu, drugi przeciwnie ... oto wynik. CODE kedzior@localhost:/home/Dokumenty/JAVA$ ~/script.php 1.tmp copy file from /media/DESKTOP_D/[LAPTOP]/NA DVD/Programowanie/Books - Java 2 Micro Edition (J2ME)/Mobile 3D Graphics API for Java 2 Micro Edition.pdf to ./NA DVD/Programowanie/Books - Java 2 Micro Edition (J2ME)/Mobile 3D Graphics API for Java 2 Micro Edition.pdf ... OK copy file from /media/DESKTOP_D/[LAPTOP]/NA DVD/Programowanie/Books - Java 2 Micro Edition (J2ME)/O\'Reilly - Learning Wireless Java.pdf to ./NA DVD/Programowanie/Books - Java 2 Micro Edition (J2ME)/O\'Reilly - Learning Wireless Java.pdf ... Warning: fopen(/media/DESKTOP_D/[LAPTOP]/NA DVD/Programowanie/Books - Java 2 Micro Edition (J2ME)/O\'Reilly - Learning Wireless Java.pdf): failed to open stream: Invalid argument in /home/kedzior/script.php on line 56 Warning: fread(): supplied argument is not a valid stream resource in /home/kedzior/script.php on line 58 Warning: fclose(): supplied argument is not a valid stream resource in /home/kedzior/script.php on line 66 OK copy file from to ./ ... Warning: fread(): supplied argument is not a valid stream resource in /home/kedzior/script.php on line 58 Warning: fclose(): supplied argument is not a valid stream resource in /home/kedzior/script.php on line 66 Warning: fclose(): supplied argument is not a valid stream resource in /home/kedzior/script.php on line 67 OK kedzior@localhost:/home/Dokumenty/JAVA$ Próbowałem zabawy z add?slashes i innymi (również ręcznie napisanymi przez siebie funkcjami, aby sprawdzić co jest) oraz jakichś dziwnych konwersji na ciągi heksadecymalne i mieszane, ale to nic nie pomogło. Po dodaniu addcslashes (lub addslashes), pisze że taki plik nie istnieje. Proszę o pomoc. Pozdrawiam, Konrad. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Próbuję funkcją fopen() otworzyć plik z podmontowanego zasobu sieciowego - właśnie testowałem to na windows i działa bez problemu:
Daj kod, którym chcesz otworzyć ten plik, bo nie wiadomo, co tam wyczyniasz. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 22.06.2008 Skąd: Rabka-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
CODE #!/usr/bin/php
function mkdir_from_path($s,$min,$is_root_path) { if(isset($s) && $s != "" && isset($min) && $min >= 0) { $tab = explode("/",$s); if($min == 0) { // NOT YET return 0; } else { if(!is_array($tab)) { echo $s." nie jest prawidlowym ciagiem ze slashem i nie moze zostac przekonwertowany na tablice"; return 0; } $len = count($tab) - 1; if(isset($is_root_path) && $is_root_path == 1) $path = "/"; for($i = $min + 1; $i < $len; $i++) { $path .= $tab[$i]."/"; @mkdir($path,0700); } return $path.$tab[$len]; } } } // process $fp = fopen($argv[1],"rt"); while($s = fgets($fp)) { $d = mkdir_from_path($s,3,0); //$d = addslashes($d); //$s = addslashes($s); //$s = erase_apostrof($s); //$d = erase_apostrof($d); $d = substr($d,0,strlen($d) - 1); $s = substr($s,0,strlen($s) - 1); echo "copy file from $s to ./$d ... "; $src = fopen("$s","r"); $dst = fopen("$d","w+"); while($tmp_data = fread($src,32768)) { if(fwrite($dst,$tmp_data) === FALSE) { fclose($dst); fclose($src); rmdir("$d"); echo "FAILED"; } } fclose($src); fclose($dst); echo "OK"; echo "\n"; } fclose($fp); ?> |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
1.
- nie używaj @ przed nazwami funkcji, bo nie będą się wyświetlały błędy. 2. - wyechuj ścieżki do plików i zobacz, czy są poprawne - jeżeli w nazwie pliku są znaki specjalne, to musisz dodać przed nimi slesz (jak w moim kodzie powyżej) 3. Sprawdzaj, czy plik istnieje (file_exists) i czy fopen nie zwraca FALSE |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 22.06.2008 Skąd: Rabka-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Dzięki Pilsener za zainteresowanie.
Chciałem skorzystać z Twoich uwag, ale odpalając skrypt, aby sprawdzić fo 'na dzień dobry', odziwo wszystkie pliki skopiowały się bez problemu do odpowiednich podkatalogów. Teraz to naprawdę nie wiem o co chodziło ![]() Jeszcze raz dzięki i pozdrawiam, Konrad. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 04:39 |