基于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]; } }