<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