博客列表 >PHP文件上传

PHP文件上传

P粉036614676
P粉036614676原创
2022年08月22日 09:20:48636浏览

1.文件操作

  1. <?php
  2. /**
  3. * 文件读取:
  4. * r:从头开始读取文件
  5. * w:没有就创建,有就删除文件类容,从头开始写
  6. * a:没有就创建,从文件末尾开始写
  7. * b:默认
  8. *
  9. * 写的时候不能读,不能够看文件是否存在,读的时候不能写
  10. *
  11. * 函数:
  12. * 1.打开函数:
  13. * fopen(filename,model)
  14. *
  15. * 2.读写
  16. * 写:
  17. * fwrite(resoure,data,length)
  18. * fputs(resoure,data,length)
  19. *
  20. * 读:
  21. * $ char = fgetc($fp)
  22. * $string = fgets($fp)
  23. * feof($fp):是否读取到文件末尾
  24. * $arr =file(文件名)
  25. * feof
  26. * 3.关闭
  27. * fcloce(resoure)
  28. * 4.其他函数
  29. * 文件是否存在:$int = file_exists(文件名)
  30. * 确定文件大小: $int = filesize(文件名)
  31. * unlink(文件名)
  32. */
  33. $fp = fopen('./text.txt','w');
  34. $arr = [1,2,3,4,5];
  35. fwrite($fp,$arr,100);
  36. fclose($fp);
  37. $arr = file('./text.txt');
  38. print_r($arr);
  39. unlink('text.txt');

2.单文件上传

函数:in_array($a,$arr); isset($a);
is_uploaded_file(tmp文件名) ; move_uploaded_file($tmp文件, 目标文件) ;

```php
<?php
/**

  • $_FILE[文件名][name]
  • $_FILE[文件名][type]
  • $_FILE[文件名][tmp_name]
  • $_FILE[文件名][error]
  • $_FILE[文件名][size]
    判断文件是否是通过HTTPPOST上传的。
  • 如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。
    *
  • pathinfo($tmp_name):返回文件相关信息
  • [dirname]
  • [basename]
  • [extension]
  • [filename]
    */
    if(isset($_FILES))
    {
    printf(‘<pre>%s</pre>‘, print_r($_FILES, true));
    $fileName = $_FILES[‘my_pic’][‘name’];
    $tmp_name = $_FILES[‘my_pic’][‘tmp_name’];
    if ($_FILES[‘my_pic’][‘error’] > 0) {
    1. $tip = '<span style="color: brown">上传错误</span><br>';
    2. switch ($_FILES['my_pic']['error']) {
    3. case 1:
    4. $tip .= '超过PHP.ini中允许上传的最大文件大小';
    5. break;
    6. case 2:
    7. $tip .= '超过MAX_FILE_SIZE中允许上传的最大文件大小';
    8. break;
    9. case 3:
    10. $tip .= '文件只有部分上传';
    11. break;
    12. case 4:
    13. $tip .= '没有文件上传';
    14. break;
    15. case 6:
    16. $tip .= '找不到临时目录';
    17. break;
    18. case 7:
    19. $tip .= '文件写入失败,请检测目录权限';
    20. break;
    21. };
    22. echo $tip;
    } else {
    1. $path = pathinfo($tmp_name);
    2. printf('<pre>%s</pre>', print_r($path, true));
    3. //1.白名单
    4. if (is_uploaded_file($fileName)) {
    5. $type = ['jpg', 'png', 'gif', 'jpeg'];
    6. if (is_array($path['extension'], $type)) {
    7. $upPath = 'upload/' . md5($path['filename']) . $path['extension'];
    8. if (move_uploaded_file($tmp_name, $upPath)) {
    9. echo "<img src = '$upPath' style = 'width = 50px'>";
    10. }
    11. {
    12. echo '<p>文件转移失败</p>';
    13. }
    14. } else {
    15. echo '<p>文件格式错误</p>';
    16. }
    17. } else {
    18. echo '<p>文件上传方法错误</p>';
    19. }
    }
    }
    ?>
    <!DOCTYPE html>

    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>文件上传</title>
    </head>
    <!--enctype:multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。-->
    <!--application/x-www-form-urlencoded:默认的编码方式。但在用文本的传输和MP3等大型文件的时候,使用这种编码就显得效率低下。-->
    <!--multipart/form-data:指定传输数据为二进制类型,比如图片,mp3,文件-->
    <!--text/plain:纯文本的传输。空格转换为"+"号,但不对特殊字符编码。-->
    <body>
    <form method="post" action="" enctype="multipart/form-data">
    <fieldset>
    <legend>文件上传</legend>
    <input type="file" name="my_pic" value="上传文件">
    <button>提交</button>
    </fieldset>
    </form>
    </body>
    </html>

  1. ## 2.多文件上传
  2. #### 1.上传多个文件一个一个判断
  3. ```php
  4. <?php
  5. /**
  6. * $_FILE[文件名][name]
  7. * $_FILE[文件名][type]
  8. * $_FILE[文件名][tmp_name]
  9. * $_FILE[文件名][error]
  10. * $_FILE[文件名][size]
  11. *
  12. *判断文件是否是通过HTTPPOST上传的。
  13. * 如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。
  14. *
  15. * pathinfo($tmp_name):返回文件相关信息
  16. * [dirname]
  17. * [basename]
  18. * [extension]
  19. * [filename]
  20. */
  21. if(isset($_FILES))
  22. {
  23. foreach($_FILES as $file)
  24. {
  25. echo $file['error'];
  26. }
  27. }
  28. ?>
  29. <!DOCTYPE html>
  30. <html lang="en">
  31. <head>
  32. <meta charset="UTF-8">
  33. <title>文件上传</title>
  34. </head>
  35. <!--enctype:multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。-->
  36. <!--application/x-www-form-urlencoded:默认的编码方式。但在用文本的传输和MP3等大型文件的时候,使用这种编码就显得效率低下。-->
  37. <!--multipart/form-data:指定传输数据为二进制类型,比如图片,mp3,文件-->
  38. <!--text/plain:纯文本的传输。空格转换为"+"号,但不对特殊字符编码。-->
  39. <body>
  40. <form method="post" action="" enctype="multipart/form-data">
  41. <fieldset>
  42. <legend>文件上传</legend>
  43. <input type="file" name="my_pic1" value="上传文件">
  44. <input type="file" name="my_pic2" value="上传文件">
  45. <input type="file" name="my_pic3" value="上传文件">
  46. <button>提交</button>
  47. </fieldset>
  48. </form>
  49. </body>
  50. </html>

2.上传多个文件数组形式判断

  1. <?php
  2. // $_FILES
  3. printf('<pre>%s</pre>', print_r($_FILES, true));
  4. if (isset($_FILES['my_pic'])) {
  5. foreach ($_FILES['my_pic']['error'] as $key=>$error) {
  6. // 0 => UPLOAD_ERR_OK
  7. if ($error === UPLOAD_ERR_OK) {
  8. // 临时文件名
  9. $tmpName = $_FILES['my_pic']['tmp_name'][$key];
  10. // 原始文件名
  11. $name = $_FILES['my_pic']['name'][$key];
  12. // 暂不加密目标文件名
  13. $dest = 'uploads/' . $name;
  14. // 移动到目标目录中
  15. move_uploaded_file($tmpName, $dest) ;
  16. // 预览
  17. echo "<img src='$dest' width='200'>";
  18. }
  19. }
  20. }
  21. ?>
  22. <!DOCTYPE html>
  23. <html lang="zh-CN">
  24. <head>
  25. <meta charset="UTF-8">
  26. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  27. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  28. <title>多文件上传-2</title>
  29. </head>
  30. <body>
  31. <form action="" method="POST" enctype="multipart/form-data">
  32. <fieldset>
  33. <legend>多文件上传-2:逐个上传</legend>
  34. <input type="file" name="my_pic[]">
  35. <input type="file" name="my_pic[]">
  36. <input type="file" name="my_pic[]">
  37. <button>上传</button>
  38. </fieldset>
  39. </form>
  40. </body>
  41. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议