Move_uploaded_file trong PHP là gì?
Có thể là bạn muốn khách truy cập tải ảnh lên cho trang tiểu sử thành viên, đính kèm tệp đính kèm vào thông báo diễn đàn hoặc chỉ chia sẻ tệp trên khu vực tải xuống công khai - khả năng xử lý tệp tải lên có thể là một bổ sung tuyệt vời cho các trang web Show Cơ sở để tải tệp lên nằm trong một loạt phần tử đầu vào HTML đặc biệt, "tệp", hiển thị hộp thoại chọn tệp trong hầu hết các trình duyệt cho phép khách truy cập của bạn chọn tệp để tải lên. Bạn có thể đưa phần tử này vào biểu mẫu HTML giống như bất kỳ phần tử nào khác - trình duyệt web hiển thị phần tử này dưới dạng hộp văn bản và nút "chọn" (hoặc "duyệt"). Khi biểu mẫu của bạn được gửi, nó sẽ tự động gửi cùng với tệp Đây là một mẫu HTML ví dụ (lưu dưới dạng upload1. php) cho phép người dùng chọn tệp để tải lên máy chủ của bạn. Lưu ý rằng chúng tôi chỉ định "enctype" trong biểu mẫu của mình để tệp của chúng tôi được truyền đúng cách và thuộc tính hành động của biểu mẫu được đặt thành điểm tải lên2. php, mà chúng ta sẽ xem xét trong giây lát
Bạn có thể thấy phần tử tệp đầu vào mới của chúng tôi đang hoạt động - lưu ý rằng chúng tôi đặt tên cho nó là "tệp người dùng". Bây giờ, đây là tập lệnh PHP đi kèm, upload2. php, in ra một ít thông tin về tệp vừa được tải lên từ upload1. php
PHP đặt trước các biến cho bạn liên quan đến tệp vừa tải lên bằng cách sử dụng một biến siêu toàn cầu, $_FILES, để giữ chúng. Mỗi tệp được tải lên được đặt vào mảng siêu toàn cục $_FILES dưới dạng một mảng khác được tạo thành từ thông tin về chính tệp đó - vì vậy chúng ta có một mảng bên trong một mảng (mảng đa chiều) Nếu chúng ta có hai tệp - tệp một và tệp hai - thay vì chỉ 'tệp người dùng', PHP sẽ đặt hai mảng vào $_FILES, mỗi mảng chứa tên, kích thước và thông tin khác về tệp một và tệp hai tương ứng. Như bạn có thể thấy ở trên, PHP đặt 'tên' và 'kích thước' để cho phép bạn đọc tên tệp gốc do người dùng cung cấp và kích thước của tệp được gửi. Nó cũng đặt 'tmp_name' để cung cấp cho bạn tên tệp có trên máy chủ của bạn (có thể giống như /tmp/tmp000) và cũng đặt 'type', cung cấp cho bạn loại MIME của tệp đã tải lên (e. g. image/png) nếu nó được cung cấp bởi trình duyệt tải lên Hãy thử tập lệnh tải lên của bạn trong trình duyệt web của bạn - xem liệu bạn có thể tự sửa đổi tập lệnh để kiểm tra xem trình duyệt của bạn có gửi loại MIME hay không. Nếu bạn thấy các tệp có kích thước nhất định không được tải lên đúng cách, bạn có thể thấy mình cần tăng cài đặt trong php của mình. ini, "upload_max_filesize" Bây giờ chúng ta có thể tải lên một tệp và đọc thông tin về nó, hãy thử điều gì đó hữu ích hơn - cách đặt tệp đã tải lên ở nơi bạn chọn PHP làm cho điều này đặc biệt dễ dàng thông qua hàm move_uploaded_file(). move_uploaded_file() lấy hai tên tệp làm tham số và trả về false nếu tệp bạn cố di chuyển không được gửi bởi HTTP upload (có lẽ người dùng của bạn đang cố đánh lừa tập lệnh của bạn chạm vào /etc/passwd) hoặc nếu không thể Tham số đầu tiên phải là tên của tệp đã tải lên mà bạn muốn làm việc với. Điều này tương ứng với $_FILES['userfile']['tmp_name'] nếu bạn đang sử dụng 'userfile' làm thành phần biểu mẫu trong trang HTML tải lên của mình. Tham số thứ hai là tên của tên tệp bạn muốn tệp đã tải lên được chuyển đến. Nếu mọi việc suôn sẻ, PHP trả về true và tệp sẽ ở nơi bạn mong đợi. Chúng ta hãy nhìn vào toàn bộ hoạt động trong hành động
Lưu ý rằng bạn sẽ cần chỉnh sửa /place/for/file thành nơi nào đó PHP có quyền sao chép tệp. Như bạn có thể thấy, việc xử lý tệp tải lên bằng PHP thực sự không thể dễ dàng hơn - lệnh gọi move_uploaded_file() kiểm tra bảo mật và thực hiện tất cả công việc sao chép cho bạn Hàm move_uploaded_file() và hàm rename() được sử dụng để di chuyển tệp vào một thư mục khác trên máy chủ. Trong trường hợp này, chúng tôi có một tệp đã được tải lên trong thư mục tạm thời của máy chủ từ đó thư mục mới được gán theo phương thức. Tệp tạm thời được di chuyển hoàn toàn đến một vị trí mới. move_uploaded_file() đảm bảo tính an toàn của thao tác này bằng cách chỉ cho phép di chuyển những tệp được tải lên thông qua PHP. Do đó, để di chuyển một tệp đã tải lên, chúng tôi sử dụng phương thức rename() cú pháp move_uploaded_file ( string $Sourcefilename, string $destination ) : bool rename ( string $oldname, string $newname [, resource $context ] ) : bool
Ví dụ. Ví dụ này là mã tải tệp lên trong thư mục có tên là Tải lên và sau đó nó thay đổi đường dẫn của nó sang thư mục khác có tên là Mới Tải lên. html
________số 8_______
________số 8_______
________số 8_______
upfile. php
________số 8_______
________số 8_______
________số 8_______
Ghi chú. Các thư mục Tải lên và Mới đã tồn tại một lần và do đó bạn sẽ phải tạo chúng nếu chúng không có sẵn bên trong máy chủ Điều nào đúng về hàm move_uploaded_file()?Quay lại. Hàm move_uploaded_file() trả về true nếu thành công và false nếu thất bại .
Sự khác biệt giữa move_uploaded_file và sao chép là gì?Sao chép sẽ sao chép nguồn tệp đến đích trong khi di chuyển sẽ di chuyển tệp . Khi một tệp được sao chép, một bản sao được tạo có nghĩa là bộ đệm (nguồn) tạm thời không được xóa. Khi bạn di chuyển một tệp, nó sẽ bị xóa khỏi vị trí ban đầu có nghĩa là trong bộ đệm tạm thời (nguồn. $_FILES) và di chuyển tệp đến đích.
Kiểu trả về của move_uploaded_file trong PHP là gì?Giá trị trả về ¶
. Nếu from không phải là tệp tải lên hợp lệ thì sẽ không có hành động nào xảy ra và move_uploaded_file() sẽ trả về false. Nếu from là một tệp tải lên hợp lệ, nhưng không thể di chuyển vì lý do nào đó, sẽ không có hành động nào xảy ra và move_uploaded_file() sẽ trả về false. Returns true on success. If from is not a valid upload file, then no action will occur, and move_uploaded_file() will return false . If from is a valid upload file, but cannot be moved for some reason, no action will occur, and move_uploaded_file() will return false .
Làm cách nào để kiểm tra lỗi move_uploaded_file trong PHP?move_uploaded_file() sẽ trở lại. . FALSE nếu tên tệp không hợp lệ FALSE và đưa ra cảnh báo trong nhật ký lỗi nếu quy trình apache không có quyền đọc/ghi đối với thư mục nguồn hoặc đích |