php 多檔案上傳組件

來源:互聯網
上載者:User

<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.111cn.net/php/2011/0311/22880.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.