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

PHP函数用法:如何上传文件到服务器并保存路径?

发布时间:2023-06-26 01:46:27

PHP 是一种广泛使用的服务器端脚本语言,那么如何上传文件到服务器并保存路径呢?

上传文件到服务器的流程:

1. 客户端选择需要上传的文件。

2. 客户端将文件发送到服务器。

3. 服务器接收文件并保存到指定目录。

4. 返回保存的文件路径。

PHP 提供了处理文件上传的方法,包括了 $_FILES 数组和上传文件的一系列函数。下面是具体的实现步骤:

1. 创建表单

在客户端的 HTML 页面中,需要创建一个表单,使用 POST 方法提交数据。

<form enctype="multipart/form-data" method="POST" action="upload.php">
  <label>上传文件:</label>
  <input type="file" name="file">
  <input type="submit" name="submit" value="上传文件">
</form>

2. 创建 PHP 文件

在服务器端创建一个 PHP 文件,用于处理上传文件。首先需要判断是否有文件被上传。

<?php
if(isset($_FILES['file'])){
  // 文件已上传
} else {
  // 文件未上传
}
?>

3. 检查文件类型和大小

为了增加安全性,可以在上传文件之前检查文件类型和大小,以防止上传不安全的文件或过大的文件。可以使用 PHP 内置函数来检查类型和大小:

<?php
// 允许的文件类型
$allowed_types = array('jpg', 'jpeg', 'png', 'gif', 'bmp');

// 允许的文件大小,单位为字节
$max_size = 1024 * 1024 * 10; // 10MB

$filename = $_FILES['file']['name'];
$file_type = $_FILES['file']['type'];
$file_size = $_FILES['file']['size'];
$file_tmp_name = $_FILES['file']['tmp_name'];

// 获取文件后缀名
$file_ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));

// 检查文件类型是否合法
if(!in_array($file_ext, $allowed_types)){
  echo '上传文件类型不合法!';
  exit;
}

// 检查文件大小是否合法
if($file_size > $max_size){
  echo '上传文件大小超出限制!';
  exit;
}
?>

4. 上传文件并保存

通过 move_uploaded_file 函数将文件从临时文件夹移动到指定文件夹,并返回上传文件路径。

<?php
if(isset($_FILES['file'])){
  // 允许的文件类型
  $allowed_types = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
  
  // 允许的文件大小,单位为字节
  $max_size = 1024 * 1024 * 10; // 10MB
  
  $filename = $_FILES['file']['name'];
  $file_type = $_FILES['file']['type'];
  $file_size = $_FILES['file']['size'];
  $file_tmp_name = $_FILES['file']['tmp_name'];
  
  // 获取文件后缀名
  $file_ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
  
  // 检查文件类型是否合法
  if(!in_array($file_ext, $allowed_types)){
    echo '上传文件类型不合法!';
    exit;
  }
  
  // 检查文件大小是否合法
  if($file_size > $max_size){
    echo '上传文件大小超出限制!';
    exit;
  }
  
  // 指定保存文件的目录
  $target_dir = 'uploads/';
  // 生成随机文件名
  $file_name = uniqid().'.'.$file_ext;
  // 指定保存文件的路径
  $target_file = $target_dir.$file_name;
  
  // 将上传的文件从临时文件夹移动到指定文件夹
  if(move_uploaded_file($file_tmp_name, $target_file)){
    echo '文件已上传:'.$target_file;
  } else {
    echo '文件上传失败!';
  }
}
?>

5. 完整的文件上传代码

<?php
if(isset($_FILES['file'])){
  // 允许的文件类型
  $allowed_types = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
  
  // 允许的文件大小,单位为字节
  $max_size = 1024 * 1024 * 10; // 10MB
  
  $filename = $_FILES['file']['name'];
  $file_type = $_FILES['file']['type'];
  $file_size = $_FILES['file']['size'];
  $file_tmp_name = $_FILES['file']['tmp_name'];
  
  // 获取文件后缀名
  $file_ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
  
  // 检查文件类型是否合法
  if(!in_array($file_ext, $allowed_types)){
    echo '上传文件类型不合法!';
    exit;
  }
  
  // 检查文件大小是否合法
  if($file_size > $max_size){
    echo '上传文件大小超出限制!';
    exit;
  }
  
  // 指定保存文件的目录
  $target_dir = 'uploads/';
  // 生成随机文件名
  $file_name = uniqid().'.'.$file_ext;
  // 指定保存文件的路径
  $target_file = $target_dir.$file_name;
  
  // 将上传的文件从临时文件夹移动到指定文件夹
  if(move_uploaded_file($file_tmp_name, $target_file)){
    echo '文件已上传:'.$target_file;
  } else {
    echo '文件上传失败!';
  }
}
?>

以上就是如何上传文件到服务器并保存路径的方法,只要按照以上步骤操作就可以实现文件上传了。