Home  >  Article  >  Backend Development  >  FTP upload and download technology in PHP

FTP upload and download technology in PHP

王林
王林Original
2023-05-10 20:43:341597browse

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:

  • Provide file upload and download functions on the web page;
  • The files are stored on the FTP server, including the path and file name when uploaded;
  • Can display the uploaded file list and support deleting files.

Example idea:

  • First connect to the FTP server and log in;
  • When the user uploads a file, use the ftp_put() function to upload the file to the specified path;
  • When the user downloads a file, use the ftp_get() function to download the file to the local;
  • When the user deletes the file, use the ftp_delete() function to delete the specified file.

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn