批改狀態(tài):合格
老師批語(yǔ):
利用所學(xué)知識(shí)實(shí)現(xiàn)Ajax+PHP異步多圖片上傳
實(shí)現(xiàn)效果圖
Html+Ajax 代碼
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Ajax+PHP實(shí)現(xiàn)異步多圖片上傳</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> <style type="text/css"> /* 圖片返回樣式 */ #back{ height: auto; text-align: center; min-height: 100px; border: 1px solid silver; border-radius: 3px; } #back img{ margin:3px 10px; border: 1px solid silver; border-radius:3px; padding: 6px; width: 200px; height: 120px; } #back p{ font-family: "微軟雅黑"; line-height: 120px; color: #ccc; } .file { position: relative; display: inline-block; background-color:#1ab294; border-radius: 4px; padding: 8px 16px; overflow: hidden; color: #fff; text-decoration: none; text-indent: 0; line-height: 20px; } .file:hover { background-color:#e37c02; } .file input { position: absolute; font-size: 100px; right: 0; top: 0; opacity: 0; } .box{ margin-top: 10px; text-align: center; } .box a{ margin-left: 10px; } </style> </head> <body> <!-- 響應(yīng)返回?cái)?shù)據(jù)容器 --> <div id="back"> </div> <div class="box"> <a href="javascript:;" class="file">選擇圖片 <input type="file" multiple="multiple" id="inputfile" name="" class="photo"> </a> <a href="javascript:;" class="file close">重新選擇 <input type="buttom" class="photo"> </a> </div> <script type="text/javascript"> $(document).ready(function(){ //響應(yīng)文件添加成功事件 var back = $("#back"); $("#inputfile").change(function(){ if (back.children('img').length>19) { //設(shè)置圖片數(shù)量 alert("最多只能選擇20張圖片"); return false; } //創(chuàng)建FormData對(duì)象 var data = new FormData(); //為FormData對(duì)象添加數(shù)據(jù) $.each($('#inputfile')[0].files, function(i, file) { data.append('upload_file'+i, file); }); $(".loading").show(); //顯示加載圖片 //發(fā)送數(shù)據(jù) $.ajax({ url:'demo.php', /*php處理文件*/ type:'POST', /*提交方式*/ data:data, cache: false, contentType: false, /*不可缺*/ processData: false, /*不可缺*/ success:function(data){ data = $(data).html(); /*轉(zhuǎn)格式*/ if($("#back").children('img').length == 0) { $("#back").append(data.replace(/</g,'<').replace(/>/g,'>')); } else{ $("#back").children('img').eq(0).before(data.replace(/</g,'<').replace(/>/g,'>')); } }, error:function(){ alert('上傳出錯(cuò)'); } }); }); $(".close").on("click",function(){ $("#back").empty(); }); }); </script> </body> </html>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
PHP代碼
<?php header('content-type:text/html charset:utf-8'); $dir_base = "upload/"; //文件上傳根目錄 //沒(méi)有成功上傳文件,報(bào)錯(cuò)并退出。 $output = "<textarea>"; $index = 0; //$_FILES 以文件name為數(shù)組下標(biāo),不適用foreach($_FILES as $index=>$file) foreach($_FILES as $file){ $upload_file_name = 'upload_file' . $index; //對(duì)應(yīng)index.html FomData中的文件命名 $filename = $_FILES[$upload_file_name]['name']; $gb_filename = iconv('utf-8','gb2312',$filename); //名字轉(zhuǎn)換成gb2312處理 //文件不存在才上傳 if(!file_exists($dir_base.$gb_filename)) { $isMoved = false; //默認(rèn)上傳失敗 $MAXIMUM_FILESIZE = 1 * 1024 * 1024; //文件大小限制 1M = 1 * 1024 * 1024 B; $rEFileTypes = "/^\.(jpg|jpeg|gif|png){1}$/i"; if ($_FILES[$upload_file_name]['size'] <= $MAXIMUM_FILESIZE && preg_match($rEFileTypes, strrchr($gb_filename, '.'))) { $isMoved = @move_uploaded_file ( $_FILES[$upload_file_name]['tmp_name'], $dir_base.$gb_filename); //上傳文件 } }else{ $isMoved = true; //已存在文件設(shè)置為上傳成功 } if($isMoved){ //輸出圖片文件<img>標(biāo)簽 //注:在一些系統(tǒng)src可能需要urlencode處理,發(fā)現(xiàn)圖片無(wú)法顯示, //請(qǐng)嘗試 urlencode($gb_filename) 或 urlencode($filename),不行請(qǐng)查看HTML中顯示的src并酌情解決。 $output .= "<img src='{$dir_base}{$filename}' title='{$filename}' alt='{$filename}'/>"; }else { //上傳失敗則把error.jpg傳回給前端 $output .= "<img src='{$dir_base}error.jpg' title='{$filename}' alt='{$filename}'/>"; } $index++; } echo $output."</textarea>";
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
參考網(wǎng)站:
http://ipnx.cn/php-weizijiaocheng-376770.html
http://www.phpchina.com/portal.php?mod=view&aid=40648
完成之后感覺(jué)很興奮,實(shí)現(xiàn)過(guò)程中對(duì)前端的知識(shí)進(jìn)行了大量的回顧,有一部分代碼是直接復(fù)制過(guò)來(lái)的,只是稍微查了一下基本用法。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)