PHP上传图片程序代码工作笔记

$_FILES与move_uploaded_file就可以在php代码中实现文件或图片上传了,这个比起很多编程语言来讲php上传功能是最简单最好用的了,下面来看个上传图片工作代码,代码如下:

  1. <?php
  2. session_start();
  3. ?>
  4. <html xmlns="http://www.phpfensi.com/ 1999/xhtml">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <title>PHP上传文件</title>
  8. <style>
  9. * {margin:0; padding:0; list-style:none;}
  10. .content {width:400px; height:200px; margin:0 auto; margin-top:60px;
  11. background:#ffd3b6; border:dashed 1px #f90}
  12. .content h1 { width:400px; height: 30px; line-height:30px; text-align:
  13. center; font-family:"微软雅黑"; font-size:14px; color:#000}
  14. .content .error {width:300px; height:30px; line-height:30px;
  15. text-align:center; margin:0 auto; color:#f00}
  16. .content .con {width:340px; height:auto; margin:0 auto; font-size:12px;}
  17. .content #file { width:280px; height:20px; border:solid 1px #ccc;
  18. background:#fff; margin:10px 0px 6px 0; font-size:12px;}
  19. .content #send { width:60px; height:22px; border:solid 1px #ccc;
  20. background:#fff; font-size:12px; margin-top:10px;}
  21. </style>
  22. </head>
  23. <body>
  24. <div>
  25. <h1>文件上传</h1>
  26. <div>
  27. <div>
  28. <?php
  29. if ($_GET['up']==up) {
  30. if ($_SESSION['file']==$_GET['irand']) {
  31. $_size=20000; //设置限制文件大小
  32. $_dir='phone/'; //文件保存目录
  33. function size($_size) {
  34. //判断文件大小是否大于1024bit 如果大于,则将大小取值为KB
  35. if ($_size>1024*1024) {
  36. return round($_size/1024/1024,2).' MB';
  37. }else if ($_size>1024) {
  38. $_size=$_size/1024;
  39. return ceil($_size).'KB';
  40. }else {
  41. return $_size.' bit';
  42. }
  43. }
  44. //设置上传图片的类型,设置图片上传大小
  45. $_upfiles = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');
  46. if (is_array($_upfiles)) {
  47. if (!in_array($_FILES['userfile']['type'],$_upfiles)) {
  48. exit('请上传格式为:jpg,png,gif的文件<br /><a href="upload.php">返回</a>');
  49. }
  50. }
  51. if ($_FILES['userfile']['size']>$_size) {
  52. exit('上传文件不能超过:'.size($_size));
  53. }
  54. if ($_FILES['userfile']['error']>0) {
  55. switch ($_FILES['userfile']['error']) {
  56. case 1: echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
  57. break;
  58. case 2: echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
  59. break;
  60. case 3: echo '文件只有部分被上传';
  61. break;
  62. case 4: echo '没有文件被上传';
  63. break;
  64. case 6: echo '找不到临时文件夹';
  65. break;
  66. case 7: echo '文件写入失败';
  67. break;
  68. }
  69. exit;
  70. }
  71. //获取文件扩展名
  72. if (!is_dir($_dir)) {
  73. mkdir($_dir,0700);
  74. }
  75. $_rand=mt_rand(0,100000);
  76. $_n=explode('.',$_FILES['userfile']['name']); //将文件名分割
  77. $_file_len=count($_n); //返回数组长度
  78. $_name=$_dir.time().'_'.$_rand.'.'.$_n[$_file_len-1];
  79. if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
  80. if (!@move_uploaded_file($_FILES['userfile']['tmp_name'],$_name)) {
  81. exit('文件移动失败');
  82. }else {
  83. echo '文件上传成功<br />';
  84. echo '文件路径:'.$_name.'<br />';
  85. echo '文件大小:'.size(filesize($_name));
  86. echo '<br /><a href="upload.php">返回继续上传</a>';
  87. }
  88. }else {
  89. exit('上传的临时文件不存在,无法将文件移动到指定文件夹');
  90. }
  91. //销毁session变量,有几种方法
  92. //第一种,销毁所有session变量:session_destroy();
  93. //第二种:销毁单个如:$_SESSION['file']=''
  94. session_destroy();
  95. exit;
  96. }else {
  97. exit('您已经提交过了,不能重复提交<br /><a href="upload.php">返回</a>');
  98. }
  99. }
  100. ?>
  101. </div>
  102. <?php $_irand=mt_rand(0,1000000); $_SESSION['file']=$_irand; ?>
  103. <form action="?up=up&irand=<?php echo $_irand; ?>" method="post" enctype="multipart/form-data">
  104. <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
  105. <input type="file" name="userfile" /><br />
  106. <input type="submit" name="send" value=" 点击上传 " />
  107. </form>
  108. </div>
  109. </div>
  110. </body>
  111. </html>