thinkphp jquery实现图片上传和预览效果

时间:2022-08-23 23:10:34

先上效果图:

thinkphp jquery实现图片上传和预览效果

那个file按钮样式先忽略

点击选择图片(浏览),随便选一张图片

thinkphp jquery实现图片上传和预览效果

js代码如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//上传图片立即预览
 function previewimage(imgfile) {
  var filextension = imgfile.value.substring(imgfile.value
    .lastindexof("."), imgfile.value.length);
  filextension = filextension.tolowercase();
  if ((filextension != '.jpg') && (filextension != '.gif')
    && (filextension != '.jpeg') && (filextension != '.png')
    && (filextension != '.bmp')) {
   alert("对不起,系统仅支持标准格式的照片,请您调整格式后重新上传,谢谢 !");
   imgfile.focus();
  } else {
   var path;
   if (document.all)//ie
   {
    imgfile.select();
    path = document.selection.createrange().text;
    document.getelementbyid("photo_info").innerhtml = "";
    document.getelementbyid("photo_info").style.filter = "progid:dximagetransform.microsoft.alphaimageloader(enabled='true',sizingmethod='scale',src=\""
      + path + "\")";//使用滤镜效果 
   } else//ff
   {
    path = window.url.createobjecturl(imgfile.files[0]);// ff 7.0以上
    //path = imgfile.files[0].getasdataurl();// ff 3.0
    document.getelementbyid("photo_info").innerhtml = "<img id='img1' width='120px' height='100px' src='"+path+"'/>";
    //document.getelementbyid("img1").src = path;
   }
  }
 }

html代码,其实不重要啦

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div class="form-group has-success has-feedback">
       <label for="info_photo" class="col-sm-2 control-label">物品图片</label>
       <div class="col-sm-10">
 
        <span class="btn btn-success btn-file"> 选择图片 <span
         class="glyphicon glyphicon-picture" aria-hidden="true"></span>
         <input type="file" name="info_photo" value="" id="info_photo"
         onchange='previewimage(this)' />
        </span>
       </div>
 
      </div>
 
      <div class="form-group has-success has-feedback">
       <label for="info_desc" class="col-sm-2 control-label"><span
        style="color: red;">* </span> 详细描述</label>
       <div class="col-sm-10">
        <textarea class="form-control" rows="5" id="info_desc"
         name="info_desc" placeholder="如需补充,请填写..." title="可包含中文数字和常用字符"></textarea>
        <div id="photo_info" class="photo_info"></div>
       </div>
      </div>

css代码就不上了啊
顺便补充一下thinkphp上传图片代码,把整个发布消息都拷过了算了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public function losething(){
   $m=m('info');
   $m->create();
   $upload = new \think\upload();// 实例化上传类
   $upload->maxsize =  3145728 ;// 设置附件上传大小
   $upload->exts  =  array('jpg', 'gif', 'png', 'jpeg','bmp');// 设置附件上传类型
   $upload->rootpath = './public/';
   $upload->savepath = '/uploads/'; // 设置附件上传目录
   $upload->autosub = false;
   // 上传文件
   $info = $upload->upload();
   if($info) {
  // 上传成功
   foreach($info as $file){
    $m->info_photo=$file['savename'];
   }
  }
   $m->create_time=date('y-m-d h:i:s',time());
   $m->uid=$_session['id'];
   $m->username=$_session['username'];
  /* $m->user_img=$_session['filename']; */
 
   $m->info_type="寻物启事";//信息类型为失物
   $lastid=$m->add();
   if($lastid){
    $this->success('发布成功');
   }else{
    $this->error('发布失败,请先登录');
   }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。