PHP实现文件上传与下载

一 文件上传


   原理:讲客户端的文件上传到服务器端,在将服务器端的临时文件移动到指定目录即可。

   客户端配置:

  1.表单页面

  2.表单的发送方式为post

     添加 enctype="multipart/form-data";


二 实例代码

  

 <form action="doAction.php" method="post" enctype="multipart/form-data" >
  	
  	请选择要上传的文件:
  	<input type="file" name="myFile"/><br>
  	<input type="submit" value="上传文件" />
  	
  </form>

请求的doAction.php


  $_FILES中保存着上传文件的信息

 $filename=$_FILES["myFile"]["name"];
 $type=$_FILES['myFile']['type'];
 $tmp_name=$_FILES['myFile']['tmp_name'];

 $size=$_FILES['myFile']['size'];
 $error=$_FILES['myFile']['error'];

//1. 将服务器上的临时文件移动指定目录下
//   move_uploaded_file($tmp_name,$destination)
//   移动成功返回 true,否则返回 false

 move_uploaded_file($tmp_name, 'uploads/'.$filename);
 
 //2. copy($src,$dst): 将文件拷贝到指定目录,拷贝成功返回true,否则返回 false
 
     copy($tmp_name, 'uploads/'.$filename);

三 $_FILES 预定义变量解析

  $_FILES:HTTP文件上传变量
  $_FILES中保存着上传文件的信息


  name :上传文件的名称
  type : 上传文件的MIME类型
  tmp_name: 上传到服务器上的临时文件名
  size: 上传文件的大小
  error:  上传文件的错误号

  move_uploaded_file 将上传的文件移动 到新位置
  copy($src,$dst): 将文件拷贝到指定目录,拷贝成功返回true,否则返回 false

  补充知识:

   PHP pathinfo()函数,返回文件路径信息。

   dirname,basename,extension
   print_r 打印变量的相关信息
   in_array() 函数搜索数组中是否存在指定的值。   


 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件上传下载是Web开发中常见的功能之一。下面是一个简单的PHP代码示例,演示如何实现文件上传下载到数据库。 文件上传到数据库: ```php <?php //数据库连接信息 $host = "localhost"; $username = "root"; $password = "password"; $dbname = "test"; //连接数据库 $conn = mysqli_connect($host, $username, $password, $dbname); if(!$conn){ die("连接失败: " . mysqli_connect_error()); } //上传文件 if(isset($_POST['submit'])){ $file = $_FILES['file']; $fileName = $file['name']; $fileType = $file['type']; $fileContent = file_get_contents($file['tmp_name']); //将文件内容存入数据库 $sql = "INSERT INTO files (name, type, content) VALUES ('$fileName', '$fileType', '$fileContent')"; if(mysqli_query($conn, $sql)){ echo "文件上传成功!"; }else{ echo "上传失败:" . mysqli_error($conn); } } ?> <form method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" name="submit" value="上传"> </form> ``` 文件下载从数据库: ```php <?php //数据库连接信息 $host = "localhost"; $username = "root"; $password = "password"; $dbname = "test"; //连接数据库 $conn = mysqli_connect($host, $username, $password, $dbname); if(!$conn){ die("连接失败: " . mysqli_connect_error()); } //从数据库中获取文件内容 $sql = "SELECT * FROM files WHERE id = 1"; //假设文件ID为1 $result = mysqli_query($conn, $sql); if(mysqli_num_rows($result) > 0){ $row = mysqli_fetch_assoc($result); $fileName = $row['name']; $fileType = $row['type']; $fileContent = $row['content']; //将文件内容输出到浏览器 header("Content-type: $fileType"); header("Content-Disposition: attachment; filename=$fileName"); echo $fileContent; }else{ echo "文件不存在!"; } ?> ``` 以上代码仅作为示例,实际应用中需要注意文件大小限制、文件类型限制、文件名重复等问题。另外,将大文件存入数据库可能会影响性能,可以考虑将文件存储在服务器的文件系统中,只在数据库中存储文件的元数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值