Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.
Klasa File dostępna z WebMasters Net ( http://www.theWebMasters.net) jest przydatnym narzędziem, szczególne wtedy, gdy twoja aplikacja intensywnie wykorzystuje pliki. Klasa ta zawiera wiele często używanych funkcji PHP operujących na plikach i hermetyzuje kontrolę błędów, dzięki czemu możesz więcej czasu poświęcić logice aplikacji zamiast zajmować się pisaniem podstawowych konstrukcji kontroli błędów.
Na wydruku 4.5 pokazany jest skrypt wyświetlający nazwy wszystkich plików w bieżącym katalogu w
postaci łączy. Gdy użytkownik kliknie łącze, skrypt zamieszczony na wydruku 4.6 wyświetla jego zawartość używając celu klasy File do odczytania jego zawartości.
Wydruk 4.5. Użycie klasy File do wyświetlenia zawartości bieżącego katalogu
<?php
include( "class.File.php3" );
?>
<html>
<head>
<title>Użycie klasy File</title>
</head>
<body>
Poniżej znajduje się lista plików w bieżącym katalogu.<br>
Kliknij nazwę pliku aby zobaczyć ich zawartość.<br><br>
<?php
$aFileClass = new File();
$aDirContents = $aFileClass->get_files( "." );
for ( $nIndex = 0; $nIndex < count( $aDirContents ); $nIndex++ )
{
$aCurFile = $aDirContents[$nIndex];
print( "<a href=\"disp_file.phtml?fn=$aCurFile\">" );
print( "$aCurFile</a><br>" );
}
?>
</body>
</html>
Wydruk 4.6. Wyświetlenie zawartości pliku za pomocą klasy File
<?php
include( "./class.File.php3" );
?>
<html>
<head>
<title>Użycie klsy File</title>
</head>
<body>
<?php
print( "The file <b>$fn</b>:<br><br>" );
$aFileClass = new File();
$aFileCont = $aFileClass->read_file( $fn );
print( "<pre>" );
print( nl2br( htmlentities( $aFileCont ) ) );
print( "</pre>" );
?>
</body>
</html>
Podsumowanie
Zdecydowanie się na użycie plików w aplikacji opartej na WWW jest jedną z krytycznych decyzji w fazie projektowania aplikacji. Noe wszystkie aplikacje używają plików, ale aby efektywnie korzystać z różnych typów strumieni danych, na przykład gniazd i potoków, należy poznać sposoby korzystania z uchwytów plików i funkcji operujących na plikach. Rozdział ten zawiera nie tylko opis podstawowych operacji na plikach i systemie plików, ale również przedstawia dodatkową klasę ułatwiającą operacje na plikach. Opis operacji na plikach zawarty w tym rozdziale oraz opis formularzy zamieszczony w rozdziale poprzednim stanowią odpowiednią podstawę do następnego rozdziału, „Wysyłanie plików przez formularz”.
61
PHP – Kompendium wiedzy
Rozdział 5. Wysyłanie plików przez
formularz
Wstęp
Poprzednie dwa rozdziały omawiały niezbędne podstawy dla tego rozdziału, ponieważ wysyłanie plików
wymaga poznania zarówno formularzy HTML, jak i funkcji systemu plików. Obsługa przesyłania plików w PHP
jest bardzo łatwa. PHP posiada wbudowany mechanizm pozwalający na odebranie pliku wysłanego z przeglądarki zgodnej z RFC 1867. Większość nowoczesnych przeglądarek jest zgodnych z tym dokumentem, ponieważ został
on włączony do standardu HTML 3.2.
Jeżeli pozwolisz użytkownikom na wysyłanie plików za pomocą formularza, musisz rozważyć
dopuszczalne typy plików oraz ich wielkości. Mechanizm wbudowany w PHP działa świetnie dla małych plików, ale jeżeli masz zamiar przesyłać duże pliki należy się zastanowić nad zastosowaniem innego mechanizmu, a przykład anonimowego FTP. Możesz również pomyśleć o stworzeniu dodatkowego mechanizmu przesyłania
plików, jeżeli są one niezbędne do działania aplikacji.
Wysyłanie pojedynczego pliku
Formularz przy pomocy którego można przesyłać pliki różni się kilkoma szczegółami od zwykłego
formularza HTML. Znacznik <FORM> musi posiadać atrybut ENCTYPE ustawiony na multipart/form-data zamiast domyślnego application/x-www-form-urlencoded. Musisz również umieścić na formularzy znacznik <INPUT> typu file. Wydruk 5.1. zawiera prosty formularz HTML zawierający jeden znacznik <INPUT>.
Wydruk 5.1. Formularz HTML ze znacznikiem <INPUT>
<html>
<head>
<title>Formularz do przesyłania plików</title>
</head>
<body>
<form action="upload_single.phtml"
method="post" enctype="multipart/form-data">
Wyślij plik: <input type="file" name="thefile"><br><br>
<input type="submit" name="Submit" value="Wyślij">
</form>
</body>
</html>