<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