Thứ Hai, 20 tháng 8, 2018

PHP - Tải tệp lên

Tải lên tệp là một trong những tính năng được sử dụng phổ biến nhất trong lập trình biểu mẫu. Lập trình PHP cung cấp một lớp đặc biệt, Tải lên để xử lý việc tải lên các tệp. Chúng ta hãy tìm hiểu cách tải lên một tệp bằng cách sử dụng lớp Tải lên trong chương này.

Cấu hình

Tải lên lớp học có thể được cấu hình bằng cách sử dụng tập tin cấu hình riêng biệt, nhiên liệu / app / config / upload.php . Các mục cấu hình quan trọng như sau:

max_size - Đặt kích thước tối đa của tệp được tải lên. “0” đề cập kích thước tải lên không giới hạn

ext_whitelist - Đặt tiện ích mở rộng tệp được phép

ext_blacklist - Đặt tiện ích tệp không được phép

type_whitelist - Đặt các loại tệp được cho phép. Ví dụ: “văn bản” cho loại mime “text / plain”

type_blacklist - Đặt các loại tệp không được phép

mime_whitelist - Đặt các loại tệp mime được phép. Ví dụ: “text / plain”

mime_blacklist - Đặt loại tệp mime không được phép

prefix - String thành tiền tố trong tên tệp trong khi lưu tệp được tải lên máy chủ

hậu tố - Chuỗi đến hậu tố trong tên tệp trong khi lưu tệp được tải lên máy chủ

tiện ích mở rộng - Mở rộng tệp được tải lên sẽ được đặt

create_path - Cho dù tạo đường dẫn tệp, nếu không có

ghi đè - Cho dù ghi đè tệp hiện có trong khi lưu tệp đã tải lên

auto_rename - Có đổi tên tệp bằng cách thêm số thứ tự trong khi lưu tệp đã tải lên hay không

randomize - Cho dù tạo tên 32 ký tự ngẫu nhiên để lưu tệp đã tải lên

Phương thức tải lên

Lớp tải lên cung cấp các tùy chọn để xử lý và lưu tệp do người dùng tải lên. Mỗi tệp được xử lý (trước khi lưu) sẽ có thông tin sau trong mảng kết quả.

field - Tên của trường biểu mẫu

name - Tên của tệp được tải lên

type - Loại tệp được định nghĩa bởi trình duyệt

mimetype - Loại tệp được định nghĩa bởi lớp Tải lên

tệp - Tên đủ điều kiện của vị trí tạm thời của tệp được tải lên

tên tệp - Tên tệp của tệp được tải lên

tiện ích mở rộng - Mở rộng tệp được tải lên

size - Kích thước của tệp được tải lên theo byte

lỗi - Mảng lỗi có mã lỗi và tin nhắn

lỗi - Có hay không đặt lỗi mảng với lý do tại sao tải lên không thành công (trong trường hợp không tải lên được)

Một khi các tập tin được lưu trong máy chủ, mảng kết quả sẽ có các thông tin sau đây.

saved_to - Đường dẫn đầy đủ điều kiện nơi tệp được tải lên đã được lưu

saved_as - Tên của tệp đã được lưu

lỗi - Mảng lỗi được cập nhật

Bây giờ, chúng ta hãy xem phương thức Upload class.

is_valid

is_valid trả về true, nếu bất kỳ tệp hợp lệ nào được tải lên bởi người dùng.
// do we have any uploaded files to save? 
if (Upload::is_valid()) { 
   // process  
} 

get_files

get_files trả về tất cả các tệp được tải lên dưới dạng mảng đa chiều. Nếu chỉ mục / tên của đầu vào tệp của biểu mẫu được chỉ định, thì nó sẽ trả về tệp được tải lên có liên quan đến đầu vào tệp được chỉ định.
foreach(Upload::get_files() as $file) { 
   // do something with the file info 
}  
if ( Upload::get_files(0)) { 
   // do something 
}

get_errors

get_errors trả về một mảng lỗi, nếu có lỗi tải lên một hoặc nhiều tệp. Nếu chỉ mục / tên của tên đầu vào tệp của biểu mẫu được chỉ định, thì nó sẽ trả về lỗi liên quan đến đầu vào tệp được chỉ định.
foreach(Upload::get_errors() as $file) { 
   // do something with the file info 
}  
if (Upload::get_errors('myimage')) { 
   // do something 
} 

Quá trình

quy trình đề cập đến quá trình thu thập thông tin thực tế về tệp được tải lên. Chúng tôi có thể cung cấp một cấu hình tùy chỉnh mới bằng cách sử dụng mảng. Nếu không có cấu hình nào được chỉ định, thì nó sẽ sử dụng cấu hình được định nghĩa trong fuel / app / config / upload.php
Upload::process (array( 
   'auto_rename' => false, 
   'overwrite'   => true 
));

tiết kiệm

tiết kiệm đề cập đến quá trình thực tế của việc lưu tất cả các tập tin xác nhận ở một vị trí thích hợp. Chúng tôi có thể chỉ định chỉ mục để lưu chỉ mục nhập cụ thể đó.
Upload::save();
Upload::save(0);
Upload::save(0, 3); 

Ví dụ làm việc

Hãy để chúng tôi tạo một bộ điều khiển mới, Controller_Upload trong mẫu nhân viên của chúng tôi để kiểm tra chức năng tải lên.

Bước 1 - Tạo một tập tin, nhiên liệu / ứng dụng / lớp / điều khiển / upload.php . Tạo bộ điều khiển tải lên.
<?php 
   class Controller_Upload extends Controller { 
   }
Bước 2 - Tạo một hành động get_upload mới.
<?php  
   class Controller_Upload extends Controller { 
      public function get_index() { 
         return \View::forge("upload/index"); 
      } 
   }
Bước 3 - Tạo một khung nhìn mới cho hành động được tạo ra.
<!DOCTYPE html> 
<html> 
   <body> 
   
      <form action = "/upload/index" method = "post" enctype = "multipart/form-data"> 
         Select image to upload: 
         <input type = "file" name = "fileToUpload" id = "fileToUpload"> 
         <input type = "submit" value = "Upload Image" name = "submit"> 
      </form>  
      
   </body> 
</html> 
Bước 4 - Tạo một post_action hành động mới để xử lý tệp được tải lên.
<?php  
   class Controller_Upload extends Controller { 
      public function get_index() { 
         return \View::forge("upload/index"); 
      }  
      public function post_index(){ 
         $config = array( 
            'path' => DOCROOT.'files', 
            'randomize' => true, 
            'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'), 
         );  
         Upload::process($config);  
         // if there are any valid files 
         
         if (Upload::is_valid()) { 
            Upload::save(); 
            echo "success"; 
         } else { 
            // and process any errors 
            foreach (Upload::get_errors() as $file) { 
               echo var_dump($file); 
            } 
         } 
      } 
   }      
Cuối cùng, chạy ứng dụng bằng cách yêu cầu url, http: // localhost: 8080 / upload / index và thử tải lên tệp.

Kết quả

học PHP
lập trình PHP

Không có nhận xét nào:

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...