工做已經快2周了,頭兒給派了個任務作個企業站!這幾天正在緊鑼密鼓的做戰中!等忙完了這個活!寫下本身的學習心得體會!與看到文章的您一塊兒分享!php
在這裏記錄每次遇到的難題,如何解決的!html
今天要作的功能就是實現上傳圖片即時可見!數組
效果以下:瀏覽器
下面說下大概思路,界面的話,會點兒CSS+DIV HTML 百度一下均可以解決掉! 我這裏寫的有點兒稍微代碼冗餘了!由於就幾張圖片,懶的用for了!ide
js方面: 添加圖片以後,取得change的value,寫到text中去!這個各個瀏覽器可能不同,無所謂了!函數
php方面:點擊上傳,圖片上傳到php處理, 我是直接寫入到xml ,當載入界面以前,先讀取xml文檔中的值分配到html,然後再載入界面,這樣就能夠了!post
我用CI有的時候直接就顯示了,若是不顯示應該用js 即時reload一下界面就能夠了!學習
貼上代碼:供參考,以及提出批評意見!this
HTML代碼,這裏我就不所有粘貼了,只粘貼了其中3個div 其實這些能夠用php的for完成的! spa
1 <div id="slider_manage"> 2 <div class="slider_manage"> 3 <h4>幻燈片管理-1</h4> 4 <form method="post" enctype="multipart/form-data"> 5 <img src="<?php if( isset($slider_2) && $slider_1 == 'img_1.jpg' ){ echo __IMG_READ_URL__ . '/slider/' . $slider_1 ;} else { echo __IMG_READ_URL__ . '/temp.jpg';}?>" class="slider_1" width="260" height="150"> 6 <input type="text" id="textField_1" class="textField" name="textField" class="txt"/> 7 <input type="hidden" name="img_num" value="img_1"> 8 <input type="button" class="btn" value="添加..."> 9 <input type="file" name="fileField" class="file" id="fileField_1" size="28" onchange="document.getElementById('textField_1').value = this.value"> 10 <input type="submit" class="btn btn-Submit" value="上傳"> 11 </form> 12 </div> 13 <div class="slider_manage"> 14 <h4>幻燈片管理-2</h4> 15 <form method="post" enctype="multipart/form-data"> 16 <img src="<?php if( isset($slider_2) && $slider_2 == 'img_2.jpg' ){ echo __IMG_READ_URL__ . '/slider/' . $slider_2 ;} else { echo __IMG_READ_URL__ . '/temp.jpg';}?>" class="slider slider_2" width="260" height="150"> 17 <input type="text" id="textField_2" class="textField" name="textField" class="txt"/> 18 <input type="hidden" name="img_num" value="img_2"> 19 <input type="button" class="btn" value="添加..."> 20 <input type="file" name="fileField" class="file" id="fileField_2" size="28" onchange="document.getElementById('textField_2').value = this.value"> 21 <input type="submit" class="btn btn-Submit" value="上傳"> 22 </form> 23 </div> 24 <div class="slider_manage"> 25 <h4>幻燈片管理-3</h4> 26 <form method="post" enctype="multipart/form-data"> 27 <img src="<?php if( isset($slider_3)&& $slider_3 == 'img_3.jpg' ){ echo __IMG_READ_URL__ . '/slider/' . $slider_3 ;} else { echo __IMG_READ_URL__ . '/temp.jpg';}?>" class="slider slider_3" width="260" height="150"> 28 <input type="text" id="textField_3" class="textField" name="textField" class="txt"/> 29 <input type="hidden" name="img_num" value="img_3"> 30 <input type="button" class="btn" value="添加..."> 31 <input type="file" name="fileField" class="file" id="fileField_2" size="28" onchange="document.getElementById('textField_3').value = this.value"> 32 <input type="submit" class="btn btn-Submit" value="上傳"> 33 </form> 34 </div> 35 </div>
js代碼以下,主要也在js中控制了上傳類型,若是判斷不到所須要的類型就直接alert一個警告!而且清楚掉text中的value 以此證實不能上傳!其實在input file中應該仍是有值的!當時用戶看不到覺得就清楚了,就會從新上傳!
1 $(document).ready(function() { 2 //當文件上傳時處理動做, 3 $('.file').change(function() { 4 var file = this.value; //取得當前改變的值 5 var current_text = $(this).parent().find("input[type='text']"); //取得當前form裏面的text值 6 7 var fileType = file.substring(file.indexOf('.')+1, file.length); //截取文件的類型 8 9 switch (fileType.toLowerCase()) { 10 case 'jpg': 11 break; 12 case 'png': 13 break; 14 case 'gif': 15 break; 16 default : 17 alert('請上傳圖片格式'); //若是圖片不是jpg png gif 就彈出警告,而且清空text 18 $(current_text).val(''); 19 break; 20 } 21 22 }); 23 });
下面貼上php代碼,code中的常量是配置的upload的路徑!
write_xml() 這個函數,能夠利用更爲簡便的方式!
否則這裏要寫好多case語句!很是冗餘,由於時間有限,而且我把前面都寫好了!SO。。。 。。。
下次有時間再修改如下!若是您有好的想法,能夠回覆給我!很是感謝!
/** 2 * 首頁管理頁面載入 3 */ 4 public function index() { 5 //從xml文件獲取首頁的三張幻燈片和2張廣告圖 6 $img_arr = $this->get_img_by_xml(); 7 //接收到上傳過來的圖片文件 8 if( !empty( $_FILES ) && is_array($_FILES)) { 9 10 //img_num 是記錄上傳的哪張圖片的,分別是img_1,2,3 表明幻燈片, img_4,5,表明橫幅廣告 11 $this->upload_move_process($_FILES, $this->input->post('img_num')); 12 13 } 14 15 //接收修改公告信息 16 $notice = $this->input->post('notice'); 17 18 if( strtolower($_SERVER['REQUEST_METHOD']) == 'post') { 19 if($notice == '') { 20 $img_arr['notice_error'] = '沒有任何公告能夠提交'; 21 } else { 22 $this->update_notice($notice); 23 $this->alert(); 24 }//endif 25 } 26 $this->load->view('index_manage', $img_arr); 27 } 28 43 /**處理上傳過來的圖片文件,移動到指定upload位置,而且寫入到xml配置文件 44 * @param $uploadFile $_FILES 45 */ 46 private function upload_move_process($uploadFile, $img_num) { 47 $tmp_name = $uploadFile['fileField']['tmp_name']; 48 $file_name = strstr( $uploadFile['fileField']['name'], '.' );//獲取文件後綴 49 if(is_uploaded_file( $tmp_name ) ) { 50 if($uploadFile['fileField']['error'] == 0) {//文件上傳 51 if(is_dir(__UPLOAD_FILE__ . '/slider')) { 52 move_uploaded_file($tmp_name, __UPLOAD_FILE__ . '/slider/' . $img_num . '.jpg'); 53 } else { 54 mkdir(__UPLOAD_FILE__ . '/slider'); 55 move_uploaded_file($tmp_name, __UPLOAD_FILE__ . '/slider/' . $img_num . '.jpg'); 56 } 57 //寫入到xml配置文件 58 $this->write_xml($img_num); 59 }//endif 60 }//endif 61 return TRUE; 62 } 63 64 /**將img寫入到xml文件中 65 * @param $img_num 原型是img_1 img_2 img3 就是當前修改的圖片 66 */ 67 private function write_xml($img_num) { 68 //這裏應該加判斷xml文件是否存在,不存在就新建一個!出於給客戶就已經帶着xml文件,這裏就再也不建立! 69 $xml = simplexml_load_file(__IMG_CONFIG__); 70 $slider = $xml->slider; $indexad = $xml->indexad; 71 switch($img_num) { 72 case 'img_1': 73 $slider->slider_1 = $img_num . '.jpg'; 74 break; 75 case 'img_2': 76 $slider->slider_2 = $img_num . '.jpg'; 77 break; 78 case 'img_3': 79 $slider->slider_3 = $img_num . '.jpg'; 80 break; 81 case 'img_4': 82 $indexad->left = $img_num . '.jpg'; 83 break; 84 case 'img_5': 85 $indexad->right = $img_num . '.jpg'; 86 } 87 file_put_contents(__IMG_CONFIG__, $xml->asXML()); 88 } 89 90 /**獲取首頁幻燈片以及廣告圖 91 * @return mixed 數組對象 92 */ 93 private function get_img_by_xml() { 94 $xml = simplexml_load_file(__IMG_CONFIG__); 95 $slider = $xml->slider; 96 $indexad = $xml->indexad; 97 $img['slider_1'] =(string)$slider->slider_1; 98 $img['slider_2'] =(string) $slider->slider_2; 99 $img['slider_3'] =(string) $slider->slider_3; 100 $img['ad_left'] =(string)$indexad->left; 101 $img['ad_right'] =(string)$indexad->right; 102 return $img; 103 }
貼上XML代碼,每次上傳都會寫入同一個地方,直接覆蓋掉原來的值,可是圖片已經換掉了!
1 <root> 2 <slider> 3 <slider_1>img_1.jpg</slider_1> 4 <slider_2>img_2.jpg</slider_2> 5 <slider_3>img_3.jpg</slider_3> 6 </slider> 7 <indexad> 8 <left>img_4.jpg</left> 9 <right>img_5.jpg</right> 10 </indexad> 11 </root>