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];
    }
}
相关文章
相关标签/搜索