举例:上传图片及PHP处理
上传图片及PHP处理流程:
处理端(接收来自form的信息,并加以处理):
情境:多张图片上传
//解析图片
$image_type=getimagesize($_FILES['x'.$im]['tmp_name']);
switch ($image_type[2]){
case "1": //gif
$src = imagecreatefromgif($_FILES['x'.$im]['tmp_name']);
break;
case "2": //jpg
$src = imagecreatefromjpeg($_FILES['x'.$im]['tmp_name']);
break;
case "3":
$src=imagecreatefrompng($_FILES['x'.$im]['tmp_name']);
break;
default:
echo '
ERROR!!请通知系统人员。
';
exit;
}
压缩图档1:
$file_name = $_FILES['image'.$im]['name'];
$src_w = imagesx($src);
$src_h = imagesy($src);
if($src_w > $src_h){
$thumb_w = 150;
$thumb_h = intval($src_h / $src_w * 150);
}else{
$thumb_h = 110;
$thumb_w = intval($src_w / $src_h * 110);
}
压缩图档2:
// 建立缩图
$thumb = imagecreatetruecolor($thumb_w, $thumb_h);
// 开始压缩
imagecopyresampled($thumb, $src, 0, 0, 0, 0, $thumb_w, $thumb_h, $src_w, $src_h);
// 假设要长宽不超过90
// 复製上传图片到指定 images 目录
$number = strrpos($file_name,".");
$orig_name = substr($file_name,0,$number);
$sub_file_name = substr($file_name,$number+1);
$new_file_name = time()."_".$num.".".$sub_file_name;
$dest_filename = $upload_dir.$new_file_name;
$sql="插入db所需要的资料";
mysql_query($sql);
$r=mysql_affected_rows();
图档储存到服务器
if($r>0) {
switch ($image_type[2]){
case "1"://gif
imagegif($thumb, 'path'.$dest_filename);
copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
break;
case "2": //jpg
imagejpeg($thumb, "path".$dest_filename);
copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
break;
case "3": //png
imagepng($thumb, "path".$dest_filename);
copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
break;
}
}
form 的元素: enctype='multipart/form-data'
列出上传的档案资讯:
print_r($_FILES)
上传多个标档案--例子:
科目<input type='file' name='con_subject[]'><br>
科目<input type='file' name='con_subject[]'><br>
科目<input type='file' name='con_subject[]'><br>
接收端
第一个档案: $_FILES['con_subject']['name'][0]
解释:
getimagesize
imagecreatefromgif
imagepng
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
