xinxuaw231 发表于 2018-12-19 10:55:17

php,js实现手机图片上传功能(thinkphp,mobile.js)


[*]  页面内容显示和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;
  }
  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://s3.运维网.com/wyfs02/M02/5D/B6/wKioL1Ujp1_ivB9oAAESOX7QbmQ949.jpg
http://s3.运维网.com/wyfs02/M02/5D/BB/wKiom1UjphmzaW33AAGjDwej-YE493.jpg
http://s3.运维网.com/wyfs02/M01/5D/B6/wKioL1Ujp2DAvYqfAAI8TN1MBNQ613.jpg
  



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

页: [1]
查看完整版本: php,js实现手机图片上传功能(thinkphp,mobile.js)