Home > Article > Backend Development > FTP upload and download technology in PHP
In web development, FTP (File Transfer Protocol) is one of the commonly used ways to upload and download files. As an efficient server-side scripting language, PHP naturally fully supports FTP upload and download. This article will introduce FTP technology in PHP, including basic knowledge of the FTP protocol, how to use FTP functions, and case analysis.
1. Basic knowledge of FTP protocol
FTP protocol is a protocol in the TCP/IP protocol suite and is used to transfer files on the network. FTP is divided into two modes: active mode and passive mode. In active mode, the client initiates a connection and the port number is randomly assigned during data transmission; in passive mode, both the client and the server need to initiate a connection and specify different port numbers for data transmission.
FTP works in two main ways: ASCII mode and binary mode. In ASCII mode, file transfer is performed in accordance with the character set of the text file, and is suitable for data types such as text files; in binary mode, file transfer is performed in binary mode, and is suitable for non-text type data such as images and audio.
2. How to use FTP functions in PHP
PHP provides a series of functions specifically used for FTP upload and download. Commonly used ones include ftp_connect(), ftp_login(), ftp_put() , ftp_get(), etc. Below we will introduce how to use these functions one by one.
1. Connect to the FTP server
Connecting to the FTP server is the first step in FTP uploading and downloading, which can be achieved using the ftp_connect() function. This function needs to pass in the server address and port number, and returns a connection handle. After the connection is successful, you can use other FTP functions to transfer files.
Sample code:
$conn = ftp_connect('ftp.example.com', 21); if(!$conn) { die('连接FTP服务器失败!'); }
2. Log in to the FTP server
After the connection is successful, you need to use the ftp_login() function to log in. Just pass in the connection handle, user name and password. .
Sample code:
$login = ftp_login($conn, 'username', 'password'); if(!$login) { die('FTP服务器登录失败!'); }
3. Upload files
FTP upload files can use the ftp_put() function, you need to pass in the connection handle and remote path (uploaded to the server path), local path (path to a local file), and transfer mode (binary or ASCII).
Sample code:
$local_file = 'local/file.txt'; $remote_file = 'remote/file.txt'; $mode = FTP_ASCII; if(ftp_put($conn, $remote_file, $local_file, $mode)) { echo '文件上传成功!'; } else { echo '文件上传失败!'; }
4. Download files
FTP download files can use the ftp_get() function, you need to pass in the connection handle, local path, remote path and transmission mode and other parameters.
Sample code:
$local_file = '/local/path/file.txt'; $remote_file = '/remote/path/file.txt'; $mode = FTP_ASCII; if(ftp_get($conn, $local_file, $remote_file, $mode)) { echo '文件下载成功!'; } else { echo '文件下载失败!'; }
5. Close the FTP connection
After the file transfer is completed, you need to use the ftp_close() function to close the FTP connection.
Sample code:
ftp_close($conn);
3. Case analysis
The following introduces an example to demonstrate how to use the FTP function in PHP to upload and download files.
Example requirements:
Example idea:
Sample code:
//连接FTP服务器 $conn = ftp_connect('ftp.example.com', 21); if(!$conn) { die('连接FTP服务器失败!'); } //登录FTP服务器 $login = ftp_login($conn, 'username', 'password'); if(!$login) { die('FTP服务器登录失败!'); } //文件上传 if($_FILES && $_FILES['file']) { $local_file = $_FILES['file']['tmp_name']; //本地文件路径 $filename = $_FILES['file']['name']; //文件名 $remote_file = '/uploads/' . $filename; //远程文件路径 $mode = FTP_BINARY; //上传模式 if(ftp_put($conn, $remote_file, $local_file, $mode)) { echo '文件上传成功!'; } else { echo '文件上传失败!'; } } //文件下载 if(isset($_GET['file'])) { $remote_file = '/uploads/' . $_GET['file']; //远程文件路径 $local_file = $_SERVER['DOCUMENT_ROOT'] . '/downloads/' . $_GET['file']; //本地文件路径 $mode = FTP_BINARY; //下载模式 if(ftp_get($conn, $local_file, $remote_file, $mode)) { echo '文件下载成功!'; } else { echo '文件下载失败!'; } } //文件列表 $files = ftp_nlist($conn, '/uploads/'); echo '<ul>'; foreach($files as $file) { $filename = basename($file); echo '<li><a href="?file=' . urlencode($filename) . '">' . $filename . '</a> <a href="?delete=' . urlencode($filename) . '">删除</a></li>'; } echo '</ul>'; //文件删除 if(isset($_GET['delete'])) { $filename = '/uploads/' . $_GET['delete']; //远程文件路径 if(ftp_delete($conn, $filename)) { echo '文件删除成功!'; } else { echo '文件删除失败!'; } } //关闭FTP连接 ftp_close($conn);
Summary:
This article introduces the basic knowledge and function usage of FTP upload and download technology in PHP, and gives a A simple case, I hope it will be helpful to readers. In actual development, appropriate improvements can be made according to needs, such as adding file size limits, file type limits, user rights control and other functions.
The above is the detailed content of FTP upload and download technology in PHP. For more information, please follow other related articles on the PHP Chinese website!