国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

PHP圖片、文件批量上傳代碼

2024-09-04 11:45:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

不管是文件還是圖片批量上傳我們第一個(gè)是在html中做name=userfile[]這種數(shù)組變量,在php接受中我們做for ($_i=0; $_i<$_cont; $_i++)遍歷這樣就可以實(shí)現(xiàn)文件批量上傳了,下面我來(lái)看一個(gè)實(shí)例,代碼如下:

  1. <?php 
  2. session_start(); 
  3. ?> 
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  5. <html xmlns="http://www.w3.org/1999/xhtml"
  6. <head> 
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  8. <title>PHP文件批量上傳</title> 
  9. <style> 
  10. * {margin:0; padding:0; list-style:none;} 
  11. .content {width:400px; height:auto; margin:0 auto; margin-top:60px; padding-bottom:30px; background:#ffd3b6; border:dashed 1px #f90} 
  12. .content h1 { width:400px; height: 30px; line-height:30px; text-align:center; font-family:"微軟雅黑"; font-size:14px; color:#000} 
  13. .content .error {width:300px; height:auto; line-height:30px; text-align:center; margin:0 auto; color:#f00} 
  14. .content .con {width:340px; height:auto; margin:0 auto; font-size:12px;} 
  15. .content #file { width:280px; height:20px; border:solid 1px #ccc; background:#fff; margin:10px 0px 6px 0; font-size:12px;} 
  16. .content #send { width:60px; height:22px; border:solid 1px #ccc; background:#fff; font-size:12px; margin-top:10px;} 
  17. </style> 
  18. <script type="text/javascript" src="js/jquery.js"></script> 
  19. <script> 
  20. $(document).ready(function() { 
  21. $('#cont').val($('.file #file').size()); 
  22. $('#send').eq(0).click(function() { 
  23. var filesize=$('.file #file').size(); 
  24. $('.file').append("<input type='file' name='userfile[]' id='file'/>"); 
  25. $('#cont').val(filesize+1); 
  26. }); 
  27. }); 
  28. </script> 
  29. </head> 
  30. <body> 
  31. <div> 
  32. <h1>PHP文件批量上傳</h1> 
  33. <div> 
  34. <div> 
  35. <?php 
  36. if ($_GET['up']==up) { 
  37. //防止重復(fù)提交 
  38. if ($_SESSION['file']==$_GET['irand']) { 
  39. $_cont=intval($_POST['cont']);   //將file框總數(shù)接收并轉(zhuǎn)換成整型 
  40. $_size=20000;                    //設(shè)置限制文件大小 
  41. $_dir='pdir/';                   //文件保存目錄 
  42. function size($_size) { 
  43. //判斷文件大小是否大于1024bit 如果大于,則將大小取值為KB,以此類(lèi)推 
  44. if ($_size>1024*1024) { 
  45. return round($_size/1024/1024,2).' MB'
  46. }else if ($_size>1024) { 
  47. $_size=$_size/1024; 
  48. return ceil($_size).'KB'
  49. }else { 
  50. return $_size.' bit'
  51. //設(shè)置上傳圖片的類(lèi)型,設(shè)置圖片上傳大小 
  52. $_upfiles = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif'); 
  53. //利用for循環(huán)上傳文件 
  54. for ($_i=0; $_i<$_cont$_i++) { 
  55. if (is_array($_upfiles)) { 
  56. if (!in_array($_FILES['userfile']['type'][$_i],$_upfiles)) { 
  57. exit('請(qǐng)上傳格式為:jpg,png,gif的文件<br /><a href="pupload.php">返回</a>'); 
  58. //判斷文件大小 
  59. if ($_FILES['userfile']['size'][$_i]>$_size) { 
  60. exit('上傳文件不能超過(guò):'.size($_size)); 
  61. //檢測(cè)文件是否已經(jīng)上傳 
  62. if ($_FILES['userfile']['error'][$_i]>0) { 
  63. switch ($_FILES['userfile']['error'][1]) { 
  64. case 1: echo '上傳的文件超過(guò)了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值'
  65. break
  66. case 2: echo '上傳文件的大小超過(guò)了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值'
  67. break
  68. case 3: echo '文件只有部分被上傳'
  69. break
  70. case 4: echo '沒(méi)有文件被上傳'
  71. break
  72. case 6: echo '找不到臨時(shí)文件夾'
  73. break
  74. case 7: echo '文件寫(xiě)入失敗'
  75. break
  76. exit
  77. //獲取文件擴(kuò)展名 
  78. if (!is_dir($_dir)) { 
  79. mkdir($_dir,0700); 
  80. //生成隨筆數(shù) 
  81. $_rand=mt_rand(0,100000); 
  82. //獲取文件擴(kuò)展名 
  83. $_n=explode('.',$_FILES['userfile']['name'][$_i]);  //將文件名分割 
  84. $_file_len=count($_n);         //返回?cái)?shù)組長(zhǎng)度 
  85. //確保獲取的擴(kuò)展名是最后一個(gè).后面的 
  86. $_name=$_dir.time().'_'.$_rand.'.'.$_n[$_file_len-1]; 
  87. //移動(dòng)文件到指定的目錄 
  88. if (is_uploaded_file($_FILES['userfile']['tmp_name'][$_i])) { 
  89. if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$_i],$_name)) { 
  90. exit('文件移動(dòng)失敗'); 
  91. }else { 
  92. echo '文件上傳成功<br />'
  93. echo '文件路徑:'.$_name.'<br />'
  94. echo '文件大小:'.size(filesize($_name)); 
  95. echo '<br /><a href="pupload.php">返回繼續(xù)上傳</a>'
  96. }else { 
  97. exit('上傳的臨時(shí)文件不存在,無(wú)法將文件移動(dòng)到指定文件夾'); 
  98. //銷(xiāo)毀session變量,有幾種方法 
  99. //第一種,銷(xiāo)毀所有session變量:session_destroy(); 
  100. //第二種:銷(xiāo)毀單個(gè)如:$_SESSION['file']='' 
  101. session_destroy(); 
  102. exit
  103. }else { 
  104. exit('您已經(jīng)提交過(guò)了,不能重復(fù)提交<br /><a href="pupload.php">返回</a>'); 
  105. ?> 
  106. </div> 
  107. <?php $_irand=mt_rand(0,1000000); $_SESSION['file']=$_irand; ?> 
  108. <form action="?up=up&irand=<?php echo $_irand; ?>" method="post" enctype="multipart/form-data"
  109. <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> 
  110. <input type="hidden" name="cont" value="" id="cont" /> 
  111. <div>  //開(kāi)源軟件:Vevb.com 
  112. <input type="file" name="userfile[]" id="file"/> 
  113. <input type="file" name="userfile[]" id="file"/> 
  114. <input type="file" name="userfile[]" id="file"/> 
  115. <input type="file" name="userfile[]" id="file"/> 
  116. </div> 
  117. <br /> 
  118. <input type="button" name="send" value=" 添加一個(gè) " id="send"/> 
  119. <input type="submit" name="send" value=" 點(diǎn)擊上傳 " id="send"/> 
  120. </form> 
  121. </div> 
  122. </div> 
  123. </body> 

核心原理分析:在多文件上傳中我們前臺(tái)最重要的是如下代碼:

  1. <input type="file" name="userfile[]" id="file"/> 
  2. <input type="file" name="userfile[]" id="file"/> 
  3. <input type="file" name="userfile[]" id="file"/> 
  4. <input type="file" name="userfile[]" id="file"/> 

這幾行代碼有細(xì)節(jié)的朋友會(huì)發(fā)現(xiàn)name="userfile[]"了,這個(gè)是以數(shù)組存儲(chǔ)了,這樣我們?nèi)绻褂胘s也可以這樣增加<input type="file" name="userfile[]" id="file"/>就可以了,那么在php是如何獲取的呢.

在多文件上傳中php處理是一個(gè)關(guān)鍵,代碼如下:

  1. for ($_i=0; $_i<$_cont$_i++) { 
  2. if (is_uploaded_file($_FILES['userfile']['tmp_name'][$_i])) { 
  3. if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$_i],$_name)) { 
  4. exit('文件移動(dòng)失敗'); 
  5. }else { 
  6. echo '文件上傳成功<br />'
  7. echo '文件路徑:'.$_name.'<br />'
  8. echo '文件大小:'.size(filesize($_name)); 
  9. echo '<br /><a href="pupload.php">返回繼續(xù)上傳</a>'

這里顯示很簡(jiǎn)單我們會(huì)看到有一個(gè)for,for就是遍歷數(shù)組,遍歷userfile[]數(shù)組,然后再由$_FILES['userfile']['tmp_name'][$_i]來(lái)獲取不同文件圖片再進(jìn)行上傳即可,注意[$_i]就是你的多文件上傳項(xiàng)了,只是保存在了數(shù)組中.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 博罗县| 漳浦县| 长兴县| 肥城市| 栾城县| 宜兰市| 大理市| 滁州市| 岑巩县| 曲沃县| 富顺县| 比如县| 华阴市| 阿克| 西青区| 繁峙县| 鄂伦春自治旗| 通州市| 葫芦岛市| 营口市| 西吉县| 加查县| 榆树市| 衡阳市| 岳西县| 银川市| 郧西县| 穆棱市| 汝城县| 东山县| 阿合奇县| 汉源县| 云霄县| 高州市| 如皋市| 阜平县| 唐海县| 莎车县| 灌阳县| 寿宁县| 沙湾县|