Hướng dẫn ankitpokhrel tus php - ankitpokhrel php của bạn
Show Tải lên tệp có thể tiếp tục trong PHP bằng TUS Resumeable Upload Protocol v1.0.0
TUS là một giao thức dựa trên HTTP để tải lên tệp có thể nối lại. Có thể tiếp tục có nghĩa là bạn có thể tiếp tục nơi bạn rời đi mà không tải lại toàn bộ dữ liệu trong trường hợp gián đoạn. Một sự gián đoạn có thể xảy ra một cách sẵn sàng nếu người dùng muốn tạm dừng hoặc tình cờ trong trường hợp phát hành mạng hoặc ngừng hoạt động máy chủ. is a HTTP based protocol for resumable file uploads. Resumable means you can carry on where you left off without re-uploading whole data again in case of any interruptions. An interruption may happen willingly if the user wants to pause, or by accident in case of a network issue or server outage. Mục lục
Cài đặtCách sử dụng $ composer require ankitpokhrel/tus-php
// Use v1 for php7.1, Symfony 3 or 4.
$ composer require ankitpokhrel/tus-php:^1.2 Cách sử dụng
Người phục vụNginx // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.
Khách hàng Nginx# nginx.conf location /files { try_files $uri $uri/ /server.php?$query_string; } Apache Khách hàng location ~ \.php$ { # ... fastcgi_request_buffering off; # Disable request buffering # ... } Thư viện khách hàng của bên thứ ba Apache# .htaccess RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^files/?(.*)?$ /server.php?$1 [QSA,L] Khách hàng $server->setMaxUploadSize(100000000); // 100 MB in bytes Thư viện khách hàng của bên thứ ba \TusPhp\Config::set(' Nhà cung cấp đám mây Khách hàngThư viện khách hàng của bên thứ ba $client = new \TusPhp\Tus\Client($baseUrl); // Key is mandatory. $key = 'your unique key'; $client->setKey($key)->file('/path/to/file', 'filename.ext'); // Create and upload a chunk of 1MB $bytesUploaded = $client->upload(1000000); // Resume, $bytesUploaded = 2MB $bytesUploaded = $client->upload(1000000); // To upload whole file, skip length param $client->file('/path/to/file', 'filename.ext')->upload(); Nhà cung cấp đám mây $offset = $client->getOffset(); // 2000000 bytes or 2MB Hỗ trợ mở rộng Hết hạn $client->setApiPath('/api'); Kết nối // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.0 Thư viện khách hàng của bên thứ baNhà cung cấp đám mâyHỗ trợ mở rộng Hết hạn Tus-JS-ClientKết nối Sự kiện Nhà cung cấp đám mâyHỗ trợ mở rộng // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.3 Hết hạn
Hết hạnKết nối // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.4 Bạn có thể sử dụng tùy chọn ____42 để ghi đè REDI mặc định hoặc cấu hình tệp. // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.5 Kết nốiMáy chủ có khả năng kết hợp nhiều tải lên vào một ứng dụng cho phép các máy khách thực hiện tải lên song song và tải lên các khối không liên tục. // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.6 Ngoài ra, máy chủ sẽ xác minh tổng kiểm tra đối với tệp được hợp nhất để đảm bảo rằng tệp không bị hỏng. Sự kiệnThông thường, bạn có thể muốn thực hiện một số thao tác sau khi tải lên hoàn tất hoặc tạo. Ví dụ: bạn có thể muốn cắt hình ảnh sau khi tải lên hoặc chuyển một tệp và gửi email cho người dùng của bạn. Bạn có thể sử dụng các sự kiện TUS cho các hoạt động này. Các sự kiện sau được gửi bởi máy chủ trong các điểm thực thi khác nhau.
Trả lời một sự kiệnĐể nghe một sự kiện, bạn chỉ cần đính kèm người nghe với tên sự kiện. Một ví dụ # .htaccess RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^files/?(.*)?$ /server.php?$1 [QSA,L]9 được tạo và truyền cho tất cả người nghe. // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.7 Hoặc, bạn cũng có thể liên kết một số phương thức của một lớp tùy chỉnh. // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.8 Phần mềm trung gianBạn có thể thao tác yêu cầu và phản hồi của máy chủ bằng phần mềm trung gian. Middleware có thể được sử dụng để chạy một đoạn mã trước khi máy chủ gọi phương thức xử lý thực tế. Bạn có thể sử dụng phần mềm trung gian để xác thực yêu cầu, xử lý CORS, danh sách trắng/danh sách đen một IP, v.v. Tạo một phần mềm trung gianĐể tạo phần mềm trung gian, bạn cần triển khai giao diện $server->setMaxUploadSize(100000000); // 100 MB in bytes0. Phương pháp xử lý cung cấp đối tượng yêu cầu và phản hồi để bạn thao tác. // server.php // Either redis, file or apcu. Leave empty for file based cache. $server = new \TusPhp\Tus\Server('redis'); $response = $server->serve(); $response->send(); exit(0); // Exit from current PHP process.9 Thêm một phần mềm trung gianĐể thêm một phần mềm trung gian, hãy lấy đối tượng phần mềm trung gian từ máy chủ và chỉ cần truyền các lớp phần mềm trung gian. # nginx.conf location /files { try_files $uri $uri/ /server.php?$query_string; }0 Hoặc, bạn cũng có thể vượt qua các đối tượng lớp trung gian. # nginx.conf location /files { try_files $uri $uri/ /server.php?$query_string; }1 Bỏ qua một phần mềm trung gianNếu bạn muốn bỏ qua hoặc bỏ qua bất kỳ phần mềm trung gian nào, bạn có thể làm như vậy bằng cách sử dụng phương thức $server->setMaxUploadSize(100000000); // 100 MB in bytes1. # nginx.conf location /files { try_files $uri $uri/ /server.php?$query_string; }2 Thiết lập môi trường phát triển và/hoặc chạy các ví dụ tại địa phươngMột ví dụ dựa trên AJAX cho việc triển khai này có thể được tìm thấy trong thư mục $server->setMaxUploadSize(100000000); // 100 MB in bytes2. Bạn có thể xây dựng và chạy nó bằng Docker như được mô tả dưới đây. DockerHãy chắc chắn rằng Docker và Docker-Compose được cài đặt trong hệ thống của bạn. Sau đó, chạy tập lệnh Docker từ Project Root. # nginx.conf location /files { try_files $uri $uri/ /server.php?$query_string; }3 Bây giờ, máy khách có thể được truy cập tại http://0.0.0.0:8080 và máy chủ có thể được truy cập tại http://0.0.0.0:8081. Điểm cuối API mặc định được đặt thành ____ và các tệp được tải lên có thể được tìm thấy bên trong thư mục $server->setMaxUploadSize(100000000); // 100 MB in bytes4. Tất cả các cấu hình Docker có thể được tìm thấy trong thư mục $server->setMaxUploadSize(100000000); // 100 MB in bytes5. Nếu bạn muốn một khởi đầu mới thì bạn có thể sử dụng các lệnh sau. Nó sẽ xóa và tạo lại tất cả các container, hình ảnh và thư mục tải lên. # nginx.conf location /files { try_files $uri $uri/ /server.php?$query_string; }4 Chúng tôi cũng có một số tập lệnh tiện ích sẽ làm giảm trải nghiệm phát triển địa phương của bạn. Xem Makefile để biết danh sách tất cả các lệnh có sẵn. Nếu bạn không sử dụng Make, thì bạn có thể sử dụng các tập lệnh shell có sẵn ở đây. Đóng góp
Bạn có thể sử dụng $server->setMaxUploadSize(100000000); // 100 MB in bytes6 và $server->setMaxUploadSize(100000000); // 100 MB in bytes7 để bật và tắt XDebug bên trong thùng chứa. Câu hỏi về dự án này?Xin vui lòng báo cáo bất kỳ lỗi tìm thấy. Yêu cầu kéo, vấn đề và khuyến nghị dự án được chào đón nhiều hơn! |