欢迎访问宙启技术站
智能推送

文件上传和下载:利用这10个PHP函数轻松实现

发布时间:2023-06-03 20:26:08

文件上传和下载是Web开发中常见的功能之一,无论是图片上传、文档下载还是视频上传,都需要利用PHP来实现。在PHP中,有很多函数可以帮助我们实现文件上传和下载的功能。下面将介绍10个常用的PHP函数来实现文件上传和下载的功能。

一、文件上传

1. move_uploaded_file()函数

move_uploaded_file()函数用于将上传的文件移动到指定目录。具体用法如下:

bool move_uploaded_file ( string $filename , string $destination )

其中,$filename是上传的文件名,$destination是文件存储的目的地。该函数会返回一个布尔值,表示上传文件是否成功移动到指定目录。

2. is_uploaded_file()函数

is_uploaded_file()函数用于检测一个上传的文件是否是合法的上传文件。如果是,该函数返回True,否则返回False。具体用法如下:

bool is_uploaded_file ( string $filename )

其中,$filename是待检测的文件名。

3. filesize()函数

filesize()函数用于获取一个文件的大小,单位为字节。具体用法如下:

int filesize ( string $filename )

其中,$filename是目标文件名。该函数将返回文件大小,以字节为单位。

4. file_put_contents()函数

file_put_contents()函数用于将数据写入到一个文件中,如果文件不存在则会新建一个文件。具体用法如下:

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

其中,$filename是待写入的文件名,$data是待写入的数据,$flags是写入文件时的选项(可选),$context是上下文(可选)。该函数返回写入的字节数量。

5. fopen()函数

fopen()函数用于打开一个文件,返回打开文件的资源句柄。具体用法如下:

resource fopen ( string $filename , string $mode [, bool $use_include_path = FALSE [, resource $context ]] )

其中,$filename是要打开的文件名,$mode是文件打开的方式,$use_include_path表示是否在 include_path 中搜索文件,$context是上下文(可选)。该函数返回一个资源类型的文件句柄,用于访问打开的文件。

二、文件下载

6. header()函数

header()函数用于向浏览器发送一个HTTP头信息。在文件下载时,主要是用它来设定Content-Type和Content-Disposition等头信息。具体用法如下:

void header ( string $string [, bool $replace = TRUE [, int $http_response_code ]] )

其中,$string是要发送的头信息,$replace表示是否覆盖已有头信息,$http_response_code表示HTTP响应代码(可选)。

7. readfile()函数

readfile()函数用于读取文件并将其发送到输出缓冲区。具体用法如下:

int readfile ( string $filename [, bool $use_include_path = FALSE [, resource $context ]] )

其中,$filename是要读取的文件名,$use_include_path表示是否在include_path中搜索文件,$context是上下文(可选)。

8. fopen()函数

fopen()函数也可以用于文件下载。在文件下载时,需要将Content-Type设置为“application/octet-stream”,并且添加Content-Disposition头信息。具体用法如下:

$filename = "file.txt"; 
$mime_type = "application/octet-stream"; 
header('Content-Type: '.$mime_type); 
header('Content-Disposition: attachment; filename="'.$filename.'"'); 

$fp=fopen($filename,"r"); 
fpassthru($fp); 
fclose($fp);

其中,$filename是要下载的文件名,$mime_type表示文件类型,header()函数用于设置Content-Type和Content-Disposition头信息,然后打开文件并将文件内容输出到浏览器。

9. fpassthru()函数

fpassthru()函数用于输出文件内容。具体用法如下:

int fpassthru ( resource $handle )

其中,$handle是文件句柄。该函数输出文件的内容到输出缓冲区。

10. readfile_chunked()函数

readfile_chunked()函数用于分块输出文件内容。具体用法如下:

function readfile_chunked($filename) 
{ 
   $chunksize = 1*(1024*1024); //分块大小 
   $handle = fopen($filename, 'rb'); //读取二进制文件 
   if ($handle === false) { 
   	return false; 
   } 
   while (!feof($handle)) { 
       echo fread($handle, $chunksize); 
       ob_flush(); 
       flush(); 
   } 
   return fclose($handle); 
} 

其中,$filename是要下载的文件名,$chunksize表示分块大小。该函数读取文件并逐块输出文件内容。

综上所述,以上10个PHP函数可以轻松实现文件上传和下载的功能。对于开发者来说,熟练掌握这些函数的使用方法,将有助于提高Web开发的效率和质量。