PHP圖片上傳

基於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];
    }
}
相關文章
相關標籤/搜索