设为首页 收藏本站
查看: 3487|回复: 0

[经验分享] php,js实现手机图片上传功能(thinkphp,mobile.js)

[复制链接]

尚未签到

发表于 2018-12-19 10:55:17 | 显示全部楼层 |阅读模式

  •   页面内容显示和js加载

      
  •   
      
      
      var ATTACH_ACCESS_KEY = '';
      $(document).ready(function () {
       init_fileuploader('file_uploader', root + '?m=upload&a=attach_upload&attach_access_key='+ATTACH_ACCESS_KEY);
      });
      
  •   php代码编写
      

      //检测并上传图片
      public function attach_upload()
      {
      $id = $_REQUEST['id'] ? $_REQUEST['id'] : "";
      $attach_access_key = $_REQUEST['attach_access_key'] ? $_REQUEST['attach_access_key'] : "";
  import("@.ORG.UploadPic");
  $upload = new UploadPic();
  $savepath = "data/upload/weixinpic/".date("Y-m-d")."/";
  if(!file_exists($savepath)){
  $this->createDir($savepath);
  }
  $upload->initialize(array(
  'allowed_types' => 'jpg,jpeg,png,gif',
  'upload_path' => $savepath,
  'is_image' => FALSE,
  'max_size' => 10240
  ));
  if (isset($_REQUEST['qqfile']))
  {
  $upload->do_upload($_REQUEST['qqfile'], true);
  }
  else if (isset($_FILES['qqfile']))
  {
  $upload->do_upload('qqfile');
  }
  else
  {
  return false;
  }
  if ($upload->get_error())
  {
  switch ($upload->get_error())
  {
  default:
  die("{'error':'错误代码: " .                                             $upload->get_error() . "'}");
  break;
  case 'upload_invalid_filetype':
  die("{'error':'文件类型无效'}");
  break;
  case 'upload_invalid_filesize':
  die("{'error':'文件尺寸过大, 最大允                            许尺寸为 10240 KB'}");
  break;
  }
  }
  if (! $upload_data = $upload->data())
  {
  die("{'error':'上传失败, 请与管理员联系'}");
  }
  if ($upload_data['is_image'] == 1)
  {
  $config['attachment_thumbnail'] = array(
  'min' => array(
  "w" => 170,
  "h" => 110
  ),
  'square' => array(
  "w" => 90,
  "h" => 90
  )
  );
  import("@.ORG.Images");
  $image = new Images();
  foreach($config['attachment_thumbnail'] AS $key => $val)
  {
  $thumb_file[$key] = $upload_data['file_path'] . $val['w'] . 'x' . $val['h'] . '_' . basename($upload_data['full_path']);
  $image->initialize(array(
  'quality' => 90,
  'source_image' => $upload_data['full_path'],
  'new_image' => $thumb_file[$key],
  'width' => $val['w'],
  'height' => $val['h']
  ))->resize();
  }
  }
  $ptem['ue_id'] = $ueid;
  $add = array();
  $add['file_name'] = $upload_data['orig_name'];
  $add['access_key'] = $attach_access_key;
  $add['add_time'] = time();
  $ainfo = M('attach')->where($ptem)->find();
  if(!empty($ainfo)){
  $maxid = M('attach')->where($ptem)->max("que_sort");
  $add['que_sort'] = $maxid + 1;
  }else{
  $add['que_sort'] = 0;
  }
  if(false == strpos($upload_data['full_path'],"http://")){
  $filepath = "http://".$_SERVER['HTTP_HOST']."/".$savepath.basename($upload_data['full_path']);// 文件真实路径
  }else{
  $filepath = $savepath.basename($upload_data['full_path']);
  }
  $add['file_location'] = basename($upload_data['full_path']);
  $add['user_que_content'] =  $filepath;
  $attach_id = M("attach")->add($add);
  unset($add);
  $output = array(
  'success' => true,
  'delete_url' => '?m=upload&a=remove_attach&attach_id=' . base64_encode(encode_hash(array(
  'attach_id' => $attach_id,
  'access_key' => $attach_access_key
  ))),
  'attach_id' => $attach_id,
  'attach_tag' => 'attach'
  );
  //获取内容
  $attachinfo = M("attach")->where("id = " . intval($attach_id))->find();
  if (!empty($attachinfo))
  {
  $data = $this->parse_attach_data(array($attachinfo),                                 'square');
  $attach_info = $data[intval($attach_id)];
  }
  if ($attach_info['thumb'])
  {
  $output['thumb'] = $attach_info['thumb'];
  }
  echo htmlspecialchars(json_encode($output), ENT_NOQUOTES);
  }
  //删除图片附件
  public function remove_attach()
  {
  $attach_id = $_REQUEST['attach_id'] ? trim($_REQUEST['attach_id']) : '';
  //判断id是否为空
  if(!$attach_id){
  echo str_replace(array("\r", "\n", "\t"), '',                                json_encode(array('rsm' => "图片id不存在无法删除",'errno' =>                    0,'err' => "图片id不存在无法删除")));
  exit;
  }
  if ($attach_info = decode_hash(base64_decode($attach_id)))
  {
  $id = $attach_info['attach_id'];
  $access_key = $attach_info['access_key'];
  //判断图片是否存在
  if (! $attach = M("attach")->where("id = " . intval($id) . "                       AND access_key = '" . $access_key . "'")->find())
  {
  echo str_replace(array("\r", "\n", "\t"), '', json_encode(array('rsm' => "图片id不存在无法删除",'errno' => 0,'err' => "图片id不存在无法删除")));
  exit;
  }
  //删除图片
  M("attach")->where("id = " . intval($id) . " AND access_key = '" . $access_key . "'")->delete();
  //删除图片文件
  $attach_dir = "data/upload/weixinpic/".date("Y-m-d")."/";
  $config['attachment_thumbnail'] = array(
  'min' => array(
  "w" => 170,
  "h" => 110
  ),
  'square' => array(
  "w" => 90,
  "h" => 90
  )
  );
  foreach($config['attachment_thumbnail'] AS $key => $val)
  {
  @unlink($attach_dir . $val['w'] . 'x' . $val['h'] . '_' . $attach['file_location']);
  }
  @unlink($attach_dir . $attach['file_location']);
  }
  echo str_replace(array("\r", "\n", "\t"), '', json_encode(array('rsm' => null,'errno' => 1,'err' => null)));
  exit;
  }
  

  //处理并解析附件数据
  public function parse_attach_data($attach, $size = null)
  {
  if (!$attach)
  {
  return false;
  }
  $config['attachment_thumbnail'] = array(
  'min' => array(
  "w" => 170,
  "h" => 110
  ),
  'square' => array(
  "w" => 90,
  "h" => 90
  )
  );
  $attach_url = "data/upload/weixinpic/".date("Y-m-d")."/";
  foreach ($attach as $key => $data)
  {
  $attach_list[$data['id']] = array(
  'id' => $data['id'],
  'is_image' => 1,
  'file_name' => $data['file_name'],
  'access_key' => $data['access_key'],
  'attachment' => $data['user_que_content'],
  );
  if ($size)
  {
  $attach_list[$data['id']]['thumb'] = $attach_url . '/' . $config['attachment_thumbnail'][$size]['w'] . 'x' . $config['attachment_thumbnail'][$size]['h'] . '_' . $data['file_location'];
  }
  }
  return $attach_list;
  }
  4.效果图



  



附件:http://down.运维网.com/data/2365571


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-653111-1-1.html 上篇帖子: 比较详细PHP生成静态页面教程 下篇帖子: CentOS 6.6编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3-Dan
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表