forget and forget

          能吃能睡是福;能忘是大福......

          posts - 39, comments - 26, trackbacks - 0, articles - 10
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          php上傳多個文件

          Posted on 2006-06-08 22:31 橘子 閱讀(2576) 評論(1)  編輯  收藏 所屬分類: WEB開發(fā)

          前面提到了上傳單個文件的方法,上傳多個文件的思想類似
          1、在表單頁面動態(tài)生成多個文件提交框,這里注意一下,多個文件提交框的名字要設(shè)置為數(shù)組,否則只有一個文件會上傳。
          此時在$_FILES數(shù)組構(gòu)造方式是這樣:$_FILES["files"][xxxxfileProperty][xxxcount]; 比如說我要知道第一個文件的error值:$_FILES["userfiles"]["error"][0] ,第一個文件客戶端名字:$_FILES["userfiles"]["name"][0]等等。
          2、接收端接收,操作和單個的是一樣,只是需要做個循環(huán),有多少個文件做多少次循環(huán),以便所有的文件都能正確發(fā)送。
          示例代碼:
          表單頁面
          <form enctype="multipart/form-data" action="post.php" method="post">
          &nbsp;&nbsp;文章標(biāo)題:&nbsp;&nbsp;<input name="title" type="text"/>&nbsp;標(biāo)題不能為空!
          <br />&nbsp;&nbsp;淘吧名字:&nbsp;&nbsp;<input name="bar_name" type="text"/>
          <?php
          echo "請選擇一個!\t(";
          for ($i=0; $i<count($name); $i++ ){
          ?echo mb_convert_encoding($name[$i]["name"],"UTF-8","GB2312");
          ?echo "? ";
          }
          echo ")";
          ?>
          <br />
          <textarea name="text" cols="90" rows="20"></textarea>
          <?php
          for ($i=0;$i<3;$i++){
          ?echo "<input name=\"userfile[]\" type=\"file\"/>";
          }
          echo "<input name=\"i\" type=\"hidden\" value=\"$i\" />";
          ?>
          </td></tr>
          </table>
          <table align="center" cellpadding="0" cellspacing="0"><tr><td>
          <input name="submit" type="submit" value="確定提交"/>&nbsp;&nbsp;
          <input name="reset" type="reset" value="重新來過"/>
          </form>
          處理頁面
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html xmlns="<head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>提交</title>
          </head>

          <body>
          <?php
          $title=$_POST["title"];
          $text=$_POST["text"];
          $name=$_POST["name"];
          $count=$_POST["i"];
          include_once("數(shù)據(jù)庫連接文件");
          if (empty($title)||empty($text)||empty($bar_name)){
          ?echo "標(biāo)題或內(nèi)容不能空
          ?die("<br /><a href=\"index.php\">重新來過</a>");
          }

          /*這里是數(shù)據(jù)查詢語言取出要用的數(shù)據(jù)*/

          if(in_array("0", $_FILES['userfile']['error'])){//上傳文件開始
          ?$uploaddir= 'attfile/';//設(shè)置上傳的文件夾地址
          ?$FILES_EXT=array('.gif','.jpg','.mp3','.3gp');//設(shè)置允許上傳文件的類型
          ?$MAX_SIZE = 20000000;//設(shè)置文件上傳限制20000000byte=2M
          ?for ($i=0;$i<$count;$i++){
          ??$FILES_NAME=$_FILES['userfile']['name'][$i];//客戶端文件名
          ??//取出文件后綴名,strrpos()從標(biāo)記開始前字節(jié)個數(shù)(不算標(biāo)記),substr()顯示從第strrpos()之后的字符
          ??$file_ext=substr($FILES_NAME,strrpos($FILES_NAME,"."));
          ??//檢查文件大小
          ??if($_FILES['userfile']['size'][$i]>$MAX_SIZE){
          ???echo "文件大小超程序允許范圍!";
          ???exit;
          ??}
          ??//檢查文件類型
          ??if(in_array($file_ext, $FILES_EXT)){
          ???$_FILES['userfile']['name'][$i]=date("YmdHis").rand(10000,1000000).$file_ext;
          ???//echo $_FILES['userfile']['name'][$i];
          ???$uploadfile = $uploaddir.$_FILES['userfile']['name'][$i];//上傳后文件的路徑及文件名
          ???//echo $uploadfile;
          ???//用move函數(shù)生成臨時文件名,并按照 $_FILES['userfile']['name']上傳到$uploaddir下
          ???if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile)) {
          ????//將上傳后的路徑寫入到數(shù)據(jù)庫中
          ????$post_id=(int)$post_id;
          ????$uploadfile="attfile/".$_FILES['userfile']['name'][$i];
          ????$sql=插入語句
          ????$stmt=$db->prepare($sql);
          ????$stmt->execute();
          ????print "<br />文件\n{$FILES_NAME}\n上傳成功!";
          ???} else {
          ????print "上傳錯誤!? 以下是上傳的信息:\n";
          ????print_r($_FILES);
          ???}
          ??}
          ??else{
          ???echo "{$FILES_NAME}\n不是允許上傳的文件類型!";
          ???exit;
          ??}
          ?}
          }

          ?>
          </body>
          </html>


          評論

          # re: php上傳多個文件  回復(fù)  更多評論   

          2009-06-01 17:58 by 小吳~!
          專家好啊~!
          看了您寫的這邊代碼,首先太興奮了!不但能上傳,其他信息也都被保存到了數(shù)據(jù)庫下。但有一個問題,就是我的怎么同時插入三條記錄到數(shù)據(jù)庫啊!就是一張圖片一條記錄,三張就是三條記錄,其他的信息都一樣的,標(biāo)題、內(nèi)容等等。
          能不能修改成用三個字段來分別保存三張圖片的路徑和地址,這樣只是一條記錄的啊?真的好期待專家?guī)臀医鉀Q,我的email:wuzhongru@yahoo.cn QQ:89587096 期待~~~~~~~~佳音!在此感謝啊!
          主站蜘蛛池模板: 中宁县| 会宁县| 青田县| 永安市| 鸡泽县| 温泉县| 砀山县| 邯郸县| 潮州市| 鲜城| 定南县| 文登市| 定日县| 格尔木市| 承德市| 和龙市| 永丰县| 龙海市| 利辛县| 太和县| 陈巴尔虎旗| 桂林市| 瑞安市| 伊春市| 浪卡子县| 长汀县| 华宁县| 黄山市| 伊宁县| 信阳市| 银川市| 霍林郭勒市| 哈密市| 舟山市| 许昌市| 黔西县| 聂拉木县| 清水河县| 宜宾市| 华宁县| 萨嘎县|