Ładowanie Plików
14 July 2008
Comments
Ładowaniem plików poprzez formularz w CI zajmuje się biblioteka upload. Oprócz samej możliwości przesłania pliku na serwer oferuje wiele pomocnych udogodnień.- Utwórz w głównym katalogu CI katalog uploads i (jeżeli to linux/unix) nadaj uprawnienia zapisu na ten katalog (chmod 777 lub 666)
- Stwórz widok upload.php:
<html>
<head>
<title>Ładowanie Plików</title>
</head>
<body>
<?=$error;?>
<?=form_open_multipart('upload/do_upload'); ?>
<input type="file" name="userfile" size="20" />
<br />
<input type="submit" value="upload" />
</form>
</body>
</html>
- Utwórz Kontroler upload.php:
<?php
class Upload extends Controller
{
function Upload()
{
parent::Controller();
}
function index()
{
$this->load->view('upload', array('error' => ''));
}
function do_upload()
{
// załadowanie biblioteki
$this->load->library('upload');
// konfiguracja
$config['upload_path'] = 'uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
// przypisanie konfiguracji
$this->upload->initialize($config);
// jeżeli ładowanie się nie powiodło
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload', $error);
}
else
{
// ładowanie pomyślne, wyświetlamy dostępne dane
echo '<pre>';
print_R($this->upload->data());
}
}
}
Konfiguracja Klasy Upload
W powyższym przykładzie tablica $config zawiera ustawienia jaki później wykorzystuje klasa ładująca. Oto opis opcji jakie można ustawiać:- upload_path: ścieżka do katalogu na załadowany plik. Względna lub bezwzględna (pełna)
- allowed_types: nazwy rozszerzeń (typy mime) plików jakie można ładować. oddzielone |
- overwrite: Domyślnie False. Jeżeli ustawione na True załadowanie pliku o tej samej nazwie nadpisze istniejący. False spowoduje dodanie numeru porządkowego do nazwy pliku (zapisanie pod inną nazwą)
- max_size: maksymalny w KB rozmiar pliku, ustawienie "0" oznacza brak limitu. Dodatkowo PHP ma swój własny limit ustawiony w php.ini i domyślnie wynosi 2MB.
- max_width, max_height: maksymalna długość i wysokość w przypadku grafik. "0" oznacza brak limitu
- encrypt_name: ustawienie na True spowoduje zapisywanie plików pod nazwami składającymi się z losowych łańcuchów (hasze). Dobre gdy nazwy plików zawierają polskie znaki i inne dziwności.
- remove_spaces: jeżeli ustawione na True usunie spacje z nazwy pliku
Metody Klasy
$this->upload->do_upload()
Ładuje plik. Spodziewa się go w wysłanym formularzu w polu o nazwie "userfile". Zwraca False przy niepowodzeniu i True w przypadku udanej operacji ładowania pliku.$this->upload->display_errors()
Zwraca błędy ładowania.$this->upload->data()
Zwraca dane o załadowanym pliku w postaci tablicy, przykład:
Array ( [file_name] => av3.png [file_type] => image/png [file_path] => /opt/lampp/htdocs/html/ci/uploads/ [full_path] => /opt/lampp/htdocs/html/ci/uploads/av3.png [raw_name] => av3 [orig_name] => av.png [file_ext] => .png [file_size] => 5.72 [is_image] => 1 [image_width] => 69 [image_height] => 72 [image_type] => png [image_size_str] => width="69" height="72" )
- file_type: typ mime pliku
- file_path: bezwzględna ścieżka do katalogu z plikiem
- full_path: jak wyżej z tym że zawiera również nazwę pliku
- raw_name: nazwa pliku bez rozszerzenia
- orig_name: oryginalna nazwa pliku
- file_ext: rozszerzenie pliku
- file_size: rozmiar pliku w KB
- is_image: 1 - grafika, 0 - nie-grafika
- image_width, image_height: długość i wysokość grafiki
- image_type: typ grafiki
- image_size_str: rozmiary grafiki dla tagów img i podobnych
RkBlog
Comment article