Accessing SMB servers with PHP

0

Witam.
Chciałbym umożliwić pobieranie plików ze strony, które swoją lokalizację mają na dyskach sieciowych.
Problem zaczyna się, gdy próbuje pobrać plik przez Firefoxa lub Chrome, gdyż przeglądarki w swojej złożoności mają zabezpieczenia przed bezpośrednim pobieraniem plików z protokołu file:// .

Poniżej zamieściłem kod php, który znalazłem w internetach.
Prosiłbym o jego interpretację oraz przykład zaimplementowania go w strukturę strony tak, aby można było bezpośrednio po kliknięciu w link pobrać element ze strony.

require_once ('smbclient.php');
 
$smbc = new smbclient ('//10.0.1.1/example', 'exampleuser', 'examplepassword');
 
if (!$smbc->get ('path/to/desired/file.txt', '/tmp/localfile.txt'))
{
    print "Failed to retrieve file:\n";
    print join ("\n", $smbc->get_last_stdout());
}
else
{
    print "Transferred file successfully.";
} 
0

No i co ten kod zwraca? Próbowałeś go użyć?

0

To znaczy, że w tej linii:

 if (!$smbc->get ('path/to/desired/file.txt', '/tmp/localfile.txt')) 

pierwsza lokalizacja to adres pliku do pobrania? a druga to utworzony katalog tymczasowy dla pliku, który ma się pobrać ?

0
Csysiu napisał(a):
 
$smbc = new smbclient ('//10.0.1.1/example', 'exampleuser', 'examplepassword'); 
$smbc->get ('path/to/desired/file.txt', '/tmp/localfile.txt')
 

Przejrzałem na githubie, nie znalazłem tam opisu metody get - źle szukałem?

Gdzie znalazłeś opis metody get?

Na githubie znalazłem za to funkcję readfile:

readfile('smb://user:password@smbserver/share/file.txt');

Może szukasz tej metody?

Pozdrawiam

0

Metodę uwierzytelnienia znalazłem na tej stronie.
http://www.smorgasbork.com/2008/07/23/accessing-smb-servers-with-php/

Jak mogę użyć poniżej metody w kodzie ?

readfile ('smb://user:password@smbserver/share/file.txt'); 
0
Csysiu napisał(a):

Metodę uwierzytelnienia znalazłem na tej stronie.
http://www.smorgasbork.com/2008/07/23/accessing-smb-servers-with-php/

Jak mogę użyć poniżej metody w kodzie ?

readfile ('smb://user:password@smbserver/share/file.txt'); 

O ile dobrze zrozumiałem, trzeba użytkownikowi podać plik, uprzednio pobrany z protokołu smb. Metoda read właśnie odczytue
plik zadany parametrem z tegoż protokołu. Na ten parametr składa się serwer, użytkownik i hasło. Więc pozostaje go
użytkownikowi podać. Może wystarczy odpowiedni header i echo?

header('Content-Transfer-Encoding: binary');
echo readfile ('smb://user:password@smbserver/share/file.txt');

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1