程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 多文件上傳組件

php 多文件上傳組件

編輯:關於PHP編程

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh_cn" lang="zh_cn">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>php教程 多文件上傳組件</title>
</head>
<body bgcolor="#ffffff" style="text-align:center;">
  <!--影片中使用的 url-->
  <!--影片中使用的文本-->
  <!-- saved from url=(0013)about:internet -->
  <script language="網頁特效">
function challs_flash_update(){ //flash 初始化函數
 var a={};
 //定義變量為object 類型

 a.title = "上傳文件"; //設置組件頭部名稱
 
 a.formname = "filedata";
 //設置form表單的文本域的name屬性
 
 a.url="update.php";
 //設置服務器接收代碼文件
 
 a.parameter="bs=tyi&id=50";
 //設置提交參數,以get形式提交
 
 a.typefile=["images (*.gif,*.png,*.jpg,*jpeg)","*.gif;*.png;*.jpg;*.jpeg;","gif (*.gif)","*.gif;","png (*.png)","*.png;","jpeg (*.jpg,*.jpeg)","*.jpg;*.jpeg;"];
 //設置可以上傳文件 數組類型
 //"images (*.gif,*.png,*.jpg)"為用戶選擇要上載的文件時可以看到的描述字符串,
 //"*.gif;*.png;*.jpg"為文件擴展名列表,其中列出用戶選擇要上載的文件時可以看到的 windows 文件格式,以分號相隔
 //2個為一組,可以設置多組文件類型
 
 a.ups教程ize=0;
 //可限制傳輸文件總容量,0或負數為不限制,單位mb
 
 a.filenum=0;
 //可限制待傳文件的數量,0或負數為不限制
 
 a.size=1;
 //上傳單個文件限制大小,單位mb,可以填寫小數類型
 
 a.formid=['select','select2'];
 //設置每次上傳時將注冊了id的表單數據以post形式發送到服務器
 //需要設置的form表單中checkbox,text,textarea,radio,select項目的id值,radio組只需要一個設置id即可
 //參數為數組類型,注意使用此參數必須有 challs_flash_formdata() 函數支持
 
 a.autoclose=1;
 //上傳完成條目,將自動刪除已完成的條目,值為延遲時間,以秒為單位,當值為 -1 時不會自動關閉,注意:當參數completeclose為false時無效
 
 a.completeclose=true;
 //設置為true時,上傳完成的條目,將也可以取消刪除條目,這樣參數 upsize 將失效, 默認為false
 
 a.repeatfile=true;
 //設置為true時,可以過濾用戶已經選擇的重復文件,否則可以讓用戶多次選擇上傳同一個文件,默認為false
 
 a.returnserver=true;
 //設置為true時,組件必須等到服務器有反饋值了才會進行下一個步驟,否則不會等待服務器返回值,直接進行下一步驟,默認為false
 
 a.md5file = 1;
 //設置md5文件簽名模式,參數如下 ,注意:flash無法計算超過100m的文件,在無特殊需要時,請設置為0
 //0為關閉md5計算簽名
 //1為直接計算md5簽名後上傳
 //2為計算簽名,將簽名提交服務器驗證,在根據服務器反饋來執行上傳或不上傳
 //3為先提交文件基本信息,根據服務器反饋,執行md5簽名計算或直接上傳,如果是要進行md5計算,計算後,提交計算結果,在根據服務器反饋,來執行是否上傳或不上傳
 
 a.loadfileorder=true;
 //選擇的文件加載文件列表順序,true = 正序加載,false = 倒序加載
 
 a.mixfilenum=0;
 //至少選擇的文件數量,設置這個將限制文件列表最少正常數量(包括等待上傳和已經上傳)為設置的數量,才能點擊上傳,0為不限制
 
 a.listshowtype = 1;
 //文件列表顯示類型:1 = 傳統列表顯示,2 = 縮略圖列表顯示(適用於圖片專用上傳)
 
 a.infodownright = "等待上傳:%1%個  已上傳:%2%個";
 //右下角統計信息的文本設置,文本中的 %1% = 等待上傳數量的替換符號,%2% = 已經上傳數量的替換符號
 
 return a ;
 //返回object
}

function challs_flash_oncomplete(a){ //每次上傳完成調用的函數,並傳入一個object類型變量,包括剛上傳文件的大小,名稱,上傳所用時間,文件類型
 var name=a.filename; //獲取上傳文件名
 var size=a.filesize; //獲取上傳文件大小,單位字節
 var time=a.updatetime; //獲取上傳所用時間 單位毫秒
 var type=a.filetype; //獲取文件類型,在 windows 上,此屬性是文件擴展名。 在 macintosh 上,此屬性是由四個字符組成的文件類型
 document.getelementbyid('show').innerhtml+=name+' --- '+size+'字節 ----文件類型:'+type+'--- 用時 '+(time/1000)+'秒<br><br>'
}

function challs_flash_oncompletedata(a){ //獲取服務器反饋信息事件
 document.getelementbyid('show').innerhtml+='<font color="#ff0000">服務器端反饋信息:</font><br />'+a+'<br />'; 
}
function challs_flash_onstart(a){ //開始一個新的文件上傳時事件,並傳入一個object類型變量,包括剛上傳文件的大小,名稱,類型
 var name=a.filename; //獲取上傳文件名
 var size=a.filesize; //獲取上傳文件大小,單位字節
 var type=a.filetype; //獲取文件類型,在 windows 上,此屬性是文件擴展名。 在 macintosh 上,此屬性是由四個字符組成的文件類型
 document.getelementbyid('show').innerhtml+=name+'開始上傳!<br />';
 
 return true; //返回 false 時,組件將會停止上傳
}

function challs_flash_oncompleteall(a){ //上傳文件列表全部上傳完畢事件,參數 a 數值類型,返回上傳失敗的數量
 document.getelementbyid('show').innerhtml+='<font color="#ff0000">所有文件上傳完畢,</font>上傳失敗'+a+'個!<br />';
 //window.location.href='http://www.access2008.cn/update'; //傳輸完成後,跳轉頁面
}

function challs_flash_onerror(a){ //上傳文件發生錯誤事件,並傳入一個object類型變量,包括錯誤文件的大小,名稱,類型
 var err=a.texterr; //錯誤信息
 var name=a.filename; //獲取上傳文件名
 var size=a.filesize; //獲取上傳文件大小,單位字節
 var type=a.filetype; //獲取文件類型,在 windows 上,此屬性是文件擴展名。 在 macintosh 上,此屬性是由四個字符組成的文件類型
 document.getelementbyid('show').innerhtml+='<font color="#ff0000">'+name+' - '+err+'</font><br />';
}

function challs_flash_formdata(a){ // 使用formid參數時必要函數
 try{
  var value = '';
  var id=document.getelementbyid(a);
  if(id.type == 'radio'){
   var name = document.getelementsbyname(id.name);
   for(var i = 0;i<name.length;i++){
    if(name[i].checked){
     value = name[i].value;
    }
   }
  }else if(id.type == 'checkbox'){
   if(id.checked){
    value = id.value;
   }
  }else{
   value = id.value;
  }
  return value;
  }catch(e){
  return '';
  }
}

function challs_flash_style(){ //組件顏色樣式設置函數
 var a = {};
 
 /*  整體背景顏色樣式 */
 a.backgroundcolor=['#f6f6f6','#f3f8fd','#dbe5f1']; //顏色設置,3個顏色之間過度
 a.backgroundlinecolor='#5576b8';     //組件外邊框線顏色
 a.backgroundfontcolor='#066ad1';     //組件最下面的文字顏色
 a.backgroundinsidecolor='#ffffff';     //組件內框背景顏色
 a.backgroundinsidelinecolor=['#e5edf5','#34629e']; //組件內框線顏色,2個顏色之間過度
 a.upbackgroundcolor='#ffffff';      //上翻按鈕背景顏色設置
 a.upoutcolor='#000000';        //上翻按鈕箭頭鼠標離開時顏色設置
 a.upovercolor='#ff0000';       //上翻按鈕箭頭鼠標移動上去顏色設置
 a.downbackgroundcolor='#ffffff';     //下翻按鈕背景顏色設置
 a.downoutcolor='#000000';       //下翻按鈕箭頭鼠標離開時顏色設置
 a.downovercolor='#ff0000';       //下翻按鈕箭頭鼠標移動上去時顏色設置
 
 /*  頭部顏色樣式 */
 a.top_backgroundcolor=['#e0eaf4','#bcd1ea'];   //顏色設置,數組類型,2個顏色之間過度
 a.top_fontcolor='#245891';       //頭部文字顏色
 
 
 /*  按鈕顏色樣式 */
 a.button_overcolor=['#fbdab5','#f3840d'];   //鼠標移上去時的背景顏色,2個顏色之間過度
 a.button_overlinecolor='#e77702';     //鼠標移上去時的邊框顏色
 a.button_overfontcolor='#ffffff';     //鼠標移上去時的文字顏色
 a.button_outcolor=['#ffffff','#dde8fe'];    //鼠標離開時的背景顏色,2個顏色之間過度
 a.button_outlinecolor='#91bdef';     //鼠標離開時的邊框顏色
 a.button_outfontcolor='#245891';     //鼠標離開時的文字顏色
 
 /* 文件列表樣式 */
 a.list_backgroundcolor='#eaf0f8';     //列表背景色
 a.list_fontcolor='#333333';       //列表文字顏色
 a.list_linecolor='#b3cdf1';       //列表分割線顏色
 a.list_canceloverfontcolor='#ff0000';    //列表取消文字移上去時顏色
 a.list_canceloutfontcolor='#d76500';    //列表取消文字離開時顏色
 a.list_progressbarlinecolor='#b3cdf1';    //進度條邊框線顏色
 a.list_progressbarbackgroundcolor='#d8e6f7';  //進度條背景顏色 
 a.list_progressbarcolor=['#ffcc00','#ffff00'];  //進度條進度顏色,2個顏色之間過度
 
 /* 錯誤提示框樣式 */
 a.err_backgroundcolor='#c0d3eb';     //提示框背景色
 a.err_linecolor='#5d7cbb';       //提示框邊框線景色
 a.err_cancelovercolor='#0066cc';     //提示框取消按鈕移上去時顏色
 a.err_canceloutcolor='#ff0000';      //提示框取消按鈕離開時顏色
 a.err_fontcolor='#245891';       //提示框文字顏色
 
 
 return a;
}


var ismsie = (navigator.appname == "microsoft internet explorer");  
function thismovie(moviename){  
  if(ismsie){  
   return window[moviename];  
  }else{
   return document[moviename];  
  }  
}
</script>
  <p><a href="temp2.html">縮略圖模式</a></p>
這個選擇框的數據將以post形式和圖片一起傳送到服務器
  <select id="select">
    <option value="老虎">老虎</option>
    <option value="兔子">兔子</option>
    <option value="駿馬">駿馬</option>
    </select>
    <select id="select2">
      <option value="石頭">石頭</option>
      <option value="剪子">剪子</option>
      <option value="布">布</option>
      </select>
    <br>
    <br>
  改變窗口:高
<label>
      :
      <input name="gao" type="text" id="gao" value="320" size="5">
      寬:
      </label>
      <label>
      <input name="kuan" type="text" id="kuan" value="408" size="5"> 
      </label>
      <label>
      <input type="submit" name="button" id="button" value=" 修 改 " onclick="thismovie('update').width=document.getelementbyid('kuan').value;thismovie('update').height=document.getelementbyid('gao').value;">
      </label>
      <br>
<br>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="408" height="320" id="update" align="middle">
<param name="allowfullscreen" value="false" />
    <param name="allowscriptaccess" value="always" />
 <param name="movie" value="update.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <embed src="update.swf" quality="high" bgcolor="#ffffff" width="408" height="320" name="update" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
 </object>
<div id="show" style="margin-top:20px; width:500px; text-align:left;"></div>
</body>
</html>

php處理文件

<?php
// 注意:使用組件上傳,不可以使用 $_files["filedata"]["type"] 來判斷文件類型
mb_http_input("utf-8");
mb_http_output("utf-8");

//---------------------------------------------------------------------------------------------
//組件設置a.md5file為2,3時 的實例代碼

if(getget('access2008_cmd')=='2'){ // 提交md5驗證後的文件信息進行驗證
 //getget("access2008_file_name")  '文件名
 //getget("access2008_file_size") '文件大小,單位字節
 //getget("access2008_file_type") '文件類型 例如.gif .png
 //getget("access2008_file_md5")  '文件的md5簽名
 
 die('0'); //返回命令  0 = 開始上傳文件, 2 = 不上傳文件,前台直接顯示上傳完成
}
if(getget('access2008_cmd')=='3'){ //提交文件信息進行驗證
 //getget("access2008_file_name")  '文件名
 //getget("access2008_file_size") '文件大小,單位字節
 //getget("access2008_file_type") '文件類型 例如.gif .png
 
 die('1'); //返回命令 0 = 開始上傳文件,1 = 提交md5驗證後的文件信息進行驗證, 2 = 不上傳文件,前台直接顯示上傳完成
}
//---------------------------------------------------------------------------------------------

$type=filekzm($_files["filedata"]["name"]);
if ((($type == ".gif")
|| ($type == ".png")
|| ($type == ".jpeg")
|| ($type == ".jpg")
|| ($type == ".bmp"))
&& ($_files["filedata"]["size"] < 200000))
  {
  if ($_files["filedata"]["error"] > 0)
    {
    echo "返回錯誤: " . $_files["filedata"]["error"] . "<br />";
    }
  else
    {
    echo "上傳的文件: " . $_files["filedata"]["name"] . "<br />";
    echo "文件類型: " . $type . "<br />";
    echo "文件大小: " . ($_files["filedata"]["size"] / 1024) . " kb<br />";
    echo "臨時文件: " . $_files["filedata"]["tmp_name"] . "<br />";

    if (file_exists( $_files["filedata"]["name"]))
      {
      echo $_files["filedata"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_files["filedata"]["tmp_name"],
      './'.$_files["filedata"]["name"]);
      echo "stored in: " . $_files["filedata"]["name"]."<br />";
   echo "md5效驗:".getget("access2008_file_md5")."<br />";
   echo "<br />上傳成功!你選擇的是<font color='#ff0000'>".getpost("select")."</font>--<font color='#0000ff'>".getpost("select2")."</font>";
      }
    }
  }
else
  {
  echo "上傳失敗,請檢查文件類型和文件大小是否符合標准<br />文件類型:".$type.'<br />文件大小:'.($_files["filedata"]["size"] / 1024) . " kb";
  }
 
function filekzm($a)
{
 $c=strrchr($a,'.');
 if($c)
 {
  return $c;
 }else{
  return '';
 }
}

function getget($v)// 獲取get
{
  if(isset($_get[$v]))
  {
  return $_get[$v];
  }else{
  return '';
  }
}

function getpost($v)// 獲取post
{
  if(isset($_post[$v]))
  {
   return $_post[$v];
  }else{
   return '';
  }
}
?>

源碼包下載
http://down.php100.com/php/2011/0311/22880.html


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved