php实现图片上传

1.图片处理img.do.php

<?php
//图片缩放
function thumb($simg,$dw,$dh){

	//原图大小
	$arr = getimagesize($simg);
	$sw = $arr[0];
	$sh = $arr[1];
	$st = $arr[2];
	$sm = $arr['mime'];

	switch($st){
		case 1:
			$imagecreate = "imagecreatefromgif";
			$imageout = "imagegif";
			break;
		case 2:
			$imagecreate = "imagecreatefromjpeg";
			$imageout = "imagejpeg";
			break;
		case 3:
			$imagecreate = "imagecreatefrompng";
			$imageout = "imagepng";
			break;
	} //over switch

	//原图和目标图片资源
	$simgr = $imagecreate($simg);

	//等比例计算
	if($sw/$dw>$sh/$dh){
		$b = $sw/$dw;
	}else{
		$b = $sh/$dh;
	}

	$dw2 = floor($sw/$b);
	$dh2 = floor($sh/$b);

	//目标图片资源
	$dimgr = imagecreatetruecolor($dw2,$dh2);

	//开始缩放
	imagecopyresampled($dimgr,$simgr,0,0,0,0,$dw2,$dh2,$sw,$sh);

	//输出浏览器.保存到与原图一致的目录下
	$dir = dirname($simg);
	$file = basename($simg);
	$save = $dir.'/'.'thumb_'.$file;
	$imageout($dimgr,$save);

}

?>

2.页面端引用处理php

<?php
  
  // 加载图片处理文件
	require('../../public/common/img.do.php');

      $goodsname = $_POST['goodsname'];
      $price = $_POST['goodsprice'];
      $sort = $_POST['goodsort'];
      $shelf = $_POST['shelf'];
      $brand_id = $_POST['brand_id'];

      
      $src = $_FILES['img']['tmp_name'];

      $name = $_FILES['img']['name'];

      $ext = array_pop(explode('.', $name));

      // $dst = '../../public/uploads'.time().mt_rand().'.'.$ext;

      //文件名,以文件名创建目录
      $fileDir = '../../public/uploads/'.$goodsname.'/';

      if(!is_dir($fileDir)){
        mkdir('../../public/uploads/'.$goodsname.'/');
      }

      //$dst = $fileDir.time().mt_rand().'.'.$ext;  //放入随机数和时间作为图片文件名,改变了图片文件名
      $dst = $fileDir.$name;  //直接在文件夹下,存放文件原有的名称,不改变图片文件名

     move_uploaded_file($src, $dst);//上传图片,并放在以商品名新建的文件夹下,下方可以压缩。

      // if(move_uploaded_file($src, $dst)){

      //   //图片缩放200*200
      //   thumb($dst,200,200);

      //   //$img = basename($dst); //获得文件名
        
      // }else{

      // }

?>

获得文件名和路径信息插入数据库。完

补充:涉及中文目录


        $dir = iconv("UTF-8", "GBK", "Public/bookcover");
        if (!file_exists($dir)){
            mkdir ($dir,0777,true);
            echo '创建文件夹bookcover成功';
        } else {
            echo '需创建的文件夹bookcover已经存在';
        }

iconv方法是为了防止中文乱码,保证可以创建识别中文目录,不用iconv方法格式的话,将无法创建中文目录

mkdir方法的第一个参数是要创建的目录路径,第二个参数是指创建目录的权限,在windows系统下该参数会被忽略,第三个参数是指是否创建多级目录,默认为false




猜你喜欢

转载自blog.csdn.net/milli236/article/details/80625692