欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP中图片上传方式和原理

程序员文章站 2022-07-02 19:01:31
上传的字段:通过字符串传输的 上传文件(图片,文档):都要通过文件流的方式传输 form表单里面就要加 enctype=”multipart/form-data&r...

上传的字段:通过字符串传输的

上传文件(图片,文档):都要通过文件流的方式传输

form表单里面就要加 enctype=”multipart/form-data”;

之后文件就变成文件流传输 ;

<form action="4file.php" enctype="multipart/form-data" method="post">
    图片1上传:<input type="file" name="image">
    <!--图片2上传:<input type="file" name="image2">-->
    <button type="submit">上传</button>
</form>

在network中查看4file.php

 

PHP中图片上传方式和原理

 

PHP后端通过$_FILES来接受前端发送过来的文件;

var_dump($_FILES['image']);

$_FILES[‘image’] 文件上传接收到文件流信息–array数组

1. name 上传文件的名称 ss.bmp

2. type 上传文件的MIME类型 image/bmp

3. tmp_name 服务器存放上传文件的临时目录地址C:\xampp\tmp\php89E1.tmp

4. error 上传文件时,错误信息

0 代表上传成功;

1 代表文件超出了php.ini中upload_max_filesize限制的值;

2 代表超过了php.ini中max_file_size限制值;

3 代表文件只有部分上传;

4 代表没有文件上传;

6 代表找不到临时文件夹;

7 代表写入失败;

size 上传文件的大小 903750 单位是b 1024B=1kb

图片上传原理

 

PHP中图片上传方式和原理
<!--html页面-->
<form action="file.php" enctype="multipart/form-data" method="post">
    图片1上传:<input type="file" name="image">
    <!--图片2上传:<input type="file" name="image2">-->
    <button type="submit">上传</button>
</form>
//php页面
$oldPath=$_FILES['image']['tmp_name'];
move_uploaded_file($oldPath,"./uplode/".$_FILES['image']['name']);

解决图片上传时重名问题

前端通过给form加上enctype将表单里面的文件转换为文件流发送给后端

后端接收这个发过来的文件流,生成一个临时文件,尾缀名.tmp文件,存放在服务器的临时文件夹

在利用 tmp_name 来获取到临时文件路径和临时文件名称,利用 move_uploaded_file(tmpPath,targePath);将临时文件移动到你需要存放的目标文件夹中

命名的时候不能以用户的图片名作为命名,这样会出现重名文件覆盖的情况;

文件上传的命名规则

当前上传文件服务时间戳+4位随机数

time()

rand(1000,9999);

time+rand(1000,9999)+后缀名

<?php
//文件上传的命名规则
  $tmp_path=$_FILES['image']['tmp_name'];
  $type=$_FILES['image']['type'];
  $wzm=substr($type,strpos($type,'/')+1);
  //echo strpos($type,'/')."<br>";
  $target_path=time().rand(10000000,99999999).'.'.$wzm;
  move_uploaded_file($tmp_path,$target_path);
?>