单文件上传

  1. <?php
  2. // $_FILES: PHP超全局变量数量, 保存着上传文件的全部信息
  3. /**
  4. * 1. $_FILES: 二维数组,每个元素对应一个上传的文件
  5. * 2. name: 原始文件名
  6. * 3. type: 文件类型, mime类型
  7. * 4. tmp_name: 临时目录
  8. * 5. error: 错误代码
  9. * 5. size: 文件大小(字节表示 byte)
  10. */
  11. printf('<pre>%s</pre>',print_r($_FILES,true));
  12. if(isset($_FILES['my_pic'])){
  13. $name = $_FILES['my_pic']['name'];
  14. $type = $_FILES['my_pic']['type'];
  15. $tmp = $_FILES['my_pic']['tmp_name'];
  16. $err = $_FILES['my_pic']['error'];
  17. $size = $_FILES['my_pic']['size'];
  18. // 错误处理
  19. if($err > 0){
  20. $tips = '<span style="color:red,fontsize:larger">上传失败</span>';
  21. switch($err){
  22. case 1:
  23. $tips .= '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
  24. break;
  25. case 2:
  26. $tips .= '文件大小超过了上传表单中MAX_FILE_SIZE最大值';
  27. break;
  28. case 3:
  29. $tips .= '文件只有部分被上传';
  30. break;
  31. case 4:
  32. $tips .= '没有文件被上传';
  33. break;
  34. case 6:
  35. $tips .= '找不到临时目录';
  36. break;
  37. case 7:
  38. $tips .= '文件写入失败,请检查目录权限';
  39. break;
  40. }
  41. echo "<p>$tips</p>";
  42. }else {
  43. // 判断用户是否是通过合法的POST方式上传
  44. if(is_uploaded_file($tmp)){
  45. // 设置允许上传类型的白名单
  46. $allow = ['jpg','png','jpeg','gif'];
  47. $ext = pathinfo($name)['extension'];
  48. // pathinfo() 函数以数组的形式返回关于文件路径的信息。
  49. // 返回的数组元素如下:
  50. // [dirname]: 目录路径
  51. // [basename]: 文件名
  52. // [extension]: 文件后缀名
  53. // [filename]: 不包含后缀的文件名
  54. if(in_array($ext,$allow)){
  55. // 满足条件,将图片转存为本地
  56. $path = 'uploads/';
  57. // 自定义文件名
  58. $dest = $path . md5($name) . '.'.$ext;
  59. // 将文件从临时目录中移动到目标目录并重命名
  60. if(move_uploaded_file($tmp,$dest)){
  61. echo '<p style="fontsize:large">上传成功</p>';
  62. echo "<img src='$dest',width='200'>";
  63. }else{
  64. echo '<p style="fontsize:large">移动失败</p>';
  65. }
  66. }
  67. else{
  68. echo '<p style="color:red">文件类型错误</p>';
  69. }
  70. }else{
  71. echo '<p style="color:red">非法方式上传</p>';
  72. }
  73. }
  74. }
  75. ?>
  76. <!DOCTYPE html>
  77. <html lang="en">
  78. <head>
  79. <meta charset="UTF-8">
  80. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  81. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  82. <title>单文件上传</title>
  83. </head>
  84. <body>
  85. <!-- 允许单文件的表单特征:
  86. 1、method为POST
  87. 2、enctype为"multipart/form-data" -->
  88. <form action="" method="POST" enctype="multipart/form-data">
  89. <fieldset>
  90. <legend>单文件上传</legend>
  91. <input type="file" name="my_pic">
  92. <button>上传</button>
  93. </fieldset>
  94. </form>
  95. </body>
  96. </html>

效果:

多文件上传

方式1

  1. <?php
  2. printf('<pre>%s</pre>',print_r($_FILES,true));
  3. if( (isset($_FILES['my_pic1'])) || (isset($_FILES['my_pic2'])) || (isset($_FILES['my_pic3'])) ){
  4. foreach($_FILES as $file){
  5. $name = $file['name'];
  6. $type = $file['type'];
  7. $tmp = $file['tmp_name'];
  8. $err = $file['error'];
  9. $size = $file['size'];
  10. // 错误处理
  11. if($err > 0){
  12. $tips = '<span style="color:red,fontsize:larger">上传失败</span>';
  13. switch($err){
  14. case 1:
  15. $tips .= '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
  16. break;
  17. case 2:
  18. $tips .= '文件大小超过了上传表单中MAX_FILE_SIZE最大值';
  19. break;
  20. case 3:
  21. $tips .= '文件只有部分被上传';
  22. break;
  23. case 4:
  24. $tips .= '没有文件被上传';
  25. break;
  26. case 6:
  27. $tips .= '找不到临时目录';
  28. break;
  29. case 7:
  30. $tips .= '文件写入失败,请检查目录权限';
  31. break;
  32. }
  33. echo "<p>$tips</p>";
  34. }else {
  35. // 判断用户是否是通过合法的POST方式上传
  36. if(is_uploaded_file($tmp)){
  37. // 设置允许上传类型的白名单
  38. $allow = ['jpg','png','jpeg','gif'];
  39. $ext = pathinfo($name)['extension'];
  40. // pathinfo() 函数以数组的形式返回关于文件路径的信息。
  41. // 返回的数组元素如下:
  42. // [dirname]: 目录路径
  43. // [basename]: 文件名
  44. // [extension]: 文件后缀名
  45. // [filename]: 不包含后缀的文件名
  46. if(in_array($ext,$allow)){
  47. // 满足条件,将图片转存为本地
  48. $path = 'uploads/';
  49. // 自定义文件名
  50. $dest = $path . md5($name) . '.'.$ext;
  51. // 将文件从临时目录中移动到目标目录并重命名
  52. if(move_uploaded_file($tmp,$dest)){
  53. echo '<p style="fontsize:large">上传成功</p>';
  54. echo "<img src='$dest',width='200'>";
  55. }else{
  56. echo '<p style="fontsize:large">移动失败</p>';
  57. }
  58. }
  59. else{
  60. echo '<p style="color:red">文件类型错误</p>';
  61. }
  62. }else{
  63. echo '<p style="color:red">非法方式上传</p>';
  64. }
  65. }
  66. }
  67. }
  68. ?>
  69. <!DOCTYPE html>
  70. <html lang="en">
  71. <head>
  72. <meta charset="UTF-8">
  73. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  74. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  75. <title>多文件上传1</title>
  76. </head>
  77. <body>
  78. <form action="" method="POST" enctype="multipart/form-data">
  79. <fieldset>
  80. <legend>多文件上传:逐个上传</legend>
  81. <input type="file" name="my_pic1">
  82. <input type="file" name="my_pic2">
  83. <input type="file" name="my_pic3">
  84. <button>上传</button>
  85. </fieldset>
  86. </form>
  87. </body>
  88. </html>

效果:

方式2

  1. <!DOCTYPE html>
  2. <?php
  3. printf('<pre>%s</pre>', print_r($_FILES, true));
  4. if(isset($_FILES['my_pic'])){
  5. for($i=0;$i<3;$i++){
  6. $name = $_FILES['my_pic']['name'][$i];
  7. $type = $_FILES['my_pic']['type'][$i];
  8. $tmp = $_FILES['my_pic']['tmp_name'][$i];
  9. $err = $_FILES['my_pic']['error'][$i];
  10. $size = $_FILES['my_pic']['size'][$i];
  11. if($err > 0){
  12. $tips = '<span style="color:red,fontsize:larger">上传失败</span>';
  13. switch($err){
  14. case 1:
  15. $tips .= '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
  16. break;
  17. case 2:
  18. $tips .= '文件大小超过了上传表单中MAX_FILE_SIZE最大值';
  19. break;
  20. case 3:
  21. $tips .= '文件只有部分被上传';
  22. break;
  23. case 4:
  24. $tips .= '没有文件被上传';
  25. break;
  26. case 6:
  27. $tips .= '找不到临时目录';
  28. break;
  29. case 7:
  30. $tips .= '文件写入失败,请检查目录权限';
  31. break;
  32. }
  33. echo "<p>$tips</p>";
  34. }
  35. else {
  36. // 判断用户是否是通过合法的POST方式上传
  37. if(is_uploaded_file($tmp)){
  38. // 设置允许上传类型的白名单
  39. $allow = ['jpg','png','jpeg','gif'];
  40. $ext = pathinfo($name)['extension'];
  41. // pathinfo() 函数以数组的形式返回关于文件路径的信息。
  42. // 返回的数组元素如下:
  43. // [dirname]: 目录路径
  44. // [basename]: 文件名
  45. // [extension]: 文件后缀名
  46. // [filename]: 不包含后缀的文件名
  47. if(in_array($ext,$allow)){
  48. // 满足条件,将图片转存为本地
  49. $path = 'uploads/';
  50. // 自定义文件名
  51. $dest = $path . md5($name) . '.'.$ext;
  52. // 将文件从临时目录中移动到目标目录并重命名
  53. if(move_uploaded_file($tmp,$dest)){
  54. echo '<p style="fontsize:large">上传成功</p>';
  55. echo "<img src='$dest',width='200'>";
  56. }else{
  57. echo '<p style="fontsize:large">移动失败</p>';
  58. }
  59. }
  60. else{
  61. echo '<p style="color:red">文件类型错误</p>';
  62. }
  63. }else{
  64. echo '<p style="color:red">非法方式上传</p>';
  65. }
  66. }
  67. }
  68. }
  69. ?>
  70. <html lang="en">
  71. <head>
  72. <meta charset="UTF-8">
  73. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  74. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  75. <title>多文件上传2</title>
  76. </head>
  77. <body>
  78. <form action="" method="POST" enctype="multipart/form-data">
  79. <fieldset>
  80. <legend>多文件上传:逐个上传2</legend>
  81. <!-- 数组来表示每个要上传的表单域的名称 -->
  82. <input type="file" name="my_pic[]">
  83. <input type="file" name="my_pic[]">
  84. <input type="file" name="my_pic[]">
  85. <button>上传</button>
  86. </fieldset>
  87. </form>
  88. </body>
  89. </html>

效果:

方式3

只需要将input标签进行multiple的设置即可
<input type="file" name="my_pic[]" multiple>

更多相关文章

  1. Android(安卓)逆向apk程序的心得
  2. Android(安卓)渗透测试学习手册(三)Android(安卓)应用的逆向和审计
  3. 最新res索引讲解(drawable、layout、values等目录的分辨率和layou
  4. Android之Adapter用法总结
  5. Windows下的Android(安卓)SDK下载,2.2之前各个版本及Google API,文
  6. 谈谈android数据存储方式
  7. Android(安卓)系统权限之SuperSU 模拟器root
  8. Android(安卓)Building System 总结
  9. Android虚拟机与Java虚拟机——两种虚拟机的比较

随机推荐

  1. Android(安卓)MMS 源码流程
  2. Android 修改Window属性
  3. 在线android
  4. Android 与JS互调
  5. android 6 sdk/ndk下载地址
  6. Android多媒体开发(2)————使用Android
  7. Android 中三种使用线程的方法
  8. Android Application (全局变量)学习使用
  9. Android动态生成控件居中显示
  10. android 跳转到应用通知设置界面(Android