基於Laravel圖片上傳javascript
1。HTML代碼:php
<!DOCYPE html> <html> <head> <meta http-equiv = "Content-Type" content = "html/text;charset = utf-8"> <title>添加旅遊信息</title> <link rel="stylesheet" href="css/tourism.css"> </head> <body> <header id="header"> <span><a href="index">ECSHOP管理中心</a></span> <span><a href="">商品分類</a></span> <span class="action-span1"> - 添加分類 </span> </header> <div id = "addTourism"> {{--在這個裏面必定要加上 enctype="multipart/form-data" 不然你在控制器中是得不到文件的,只能獲得文件名字--}} <form action="addTourism" method="post" enctype="multipart/form-data" > {{--這個是Laravel自帶的驗證,必需要加上,不然會報沒有驗證或是非法請求--}} <input style="display: none;" name ="_token" value="{{csrf_token()}}"> <ul> <li>主題:<input type="text" id="title" name="name"/></li> <li>價格:<input type="text" id="price" name="price"/></li> <li>是否有效: <select name = "is_effective"> <option name = "is_effective" value="1">有效</option> <option name = "is_effective" value="2">無效</option> </select> </li> </ul> <ul> <li>旅遊類型: <select name = "trip_mode"> <option value="0">請選擇</option> <option value="1">國內長線</option> <option value="2">國內短線</option> </select> </li> <li>滿意度:<input type="text" name="satisfied"/></li> <li>銷售數量:<input type="text" name="number"/></li> </ul> <div class = "desc"> <h2>簡要描述</h2> <textarea name = "briefy_explain"></textarea> </div> <div class = "desc"> <h2>詳細描述</h2> <textarea name = "detailed_explain" style="height: 120px;"></textarea> </div> <div class = "img" id = "imgs"> </div> {{--name = img_path[] 是爲了上傳多張圖片,若是在名稱後面沒有[] 在控制器中只能得到一張圖片--}} <input type="file" name = "img_path[]" id = "img_path" multiple="true"/> <input style="width: 100%; height: 30px; text-align: center;" type="submit" value="提交信息"/> </form> </div> <script type="text/javascript"> document.getElementById('img_path').onchange = function () { //獲取全部的圖片 var images = document.getElementById('img_path').files; //刪除以前預覽的圖片 if(images.length>0) document.getElementById('imgs').innerHTML=""; //進行預覽圖片 for(var i = 0; i<images.length; i++){ var reader = new FileReader(); reader.readAsDataURL(images[i]); reader.onload = function (e) { var list = document.createElement("img"); list.src=this.result; list.id = "listImage"+i; document.getElementById('imgs').appendChild(list); } } } </script> </body> </html>
2.控制器代碼:css
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Model\Admin\TourismModel; use Validator,Request; class TourismController extends Controller{ /** * 添加旅遊信息 */ public function addTourism(){ if($_SERVER["REQUEST_METHOD"] == "POST"){ $input = Request::all(); unset($input['_token']); $tourism = new TourismModel(); $msg = $tourism->addTourism($input); return json_encode($msg); } return view('admin.addTourism'); } public function editTourism(){ if($_SERVER['REQUEST_METHOD'] == "POST") { $file = Request::file('course_img'); $request = Request::all(); var_dump($file); echo "</br>"; var_dump($request); } // $image = $_FILES['input_img']; return view('admin.editTourism'); } }
3.模型中的寫法html
<?php namespace App\Http\Model\Admin; use Illuminate\Database\Eloquent\Model; use Validator; class TourismModel extends Model{ protected $table = "tourism"; public $timestamps = false; //不自動設置create_at和update_at //不顯示的 protected $hidden = array('user_id'); //能夠批量操做的 protected $fillable = array('id','name','price', 'img_path','satisfied', 'detailed_explain', 'trip_mode', 'is_effective','op_time','number','briefy_explain','user_id'); public function addTourism($data){ //驗證 全部的輸入都是必須項 $validator = Validator::make($data ,[ '*' => 'required'] ); //驗證錯誤的提示 if($validator->fails()){ return['code'=>202,'msg'=>'沒有輸入必要的字段']; } //將_token移除 unset($data['_token']); $image_path = ""; $is_image = ['.jpg','.png','.gif','.jpeg']; $images = $_FILES['img_path']; for($i = 0; $i < count($images['name']); $i++){ $image_name = $images['name'][$i]; //獲取圖片的名稱 $image_name =strstr($image_name,'.'); //截取字符串 if(!in_array($image_name,$is_image)) return ['code'=>202,'msg'=>'您上次的文件不是圖片']; $path = "upload/admin/".date('Y-m-d',time()); if(!is_dir($path )) mkdir($path, 0777, true); //判斷文件是否存在 不存在則建立 $image_name = str_random(5).time().$image_name; //設置圖片的名稱,爲了保存的圖片不重名 if(empty($image_path)) $image_path = $image_name; //拼接字符串 保存到數據庫中 else $image_path = $image_path.','.$image_name; $pics_path = $path."/".$image_name; move_uploaded_file($images['tmp_name'][$i],$pics_path); } $data['img_path'] = $image_path; $data['op_time'] = time(); $msg = $this->create($data); //是用create方法會返回當前插入數據的全部數據 return['code'=>200,'msg'=>$msg]; } }