MVC--图片上传

Posted PHP菜鸟进阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC--图片上传相关的知识,希望对你有一定的参考价值。

MVC 是一种使用模型-视图-控制器设计创建 Web 应用程序的模式:

Model-------处理应用程序数据逻辑,通常模型对象负责在数据库中存取数据; View------------应用程序中处理数据显示的部分,界面即html; Controller------处理用户交互部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC框架模式下的图片上传:

function img_uplode($files){
    $path = './public/uplode/';//组装上传图片存放地址    if(!file_exists($path)){
	mkdir($path);
    }
    $path = $path.date("Y-m-d").'/';	
   if(!file_exists($path)){ mkdir($path);    }    $type = explode('/',$files['type']);//获取图片后缀    $img_name = time().mt_rand(0,999999).'.'.$type[1];//设置保存上传图片的名字    move_uploaded_file($files['tmp_name'], $path.$img_name);    $img_path = $path.$img_name; return $img_path; }

当有图片上传时,调用此函数:

  1. 获取图片后缀,给图片以时间+随机数的格式重命名,以此确定图片名称的唯一

  2. 将图片复制到新路径:move_uploaded_file(原始路径,新路径)

  3. 将最终路径返回,添加到数据表中

缩略图上传

function trumb($imgPath,$width=60,$height=20){
    $suffix = trim(strrchr($imgPath,'.'),'.');//获取文件后缀
    $num = strrpos($imgPath,'.');
    $path = substr($imgPath,0,$num).time().mt_rand(0,999999).'.'.$suffix;
    $imgStr = file_get_contents($imgPath);
    $img = imagecreatefromstring($imgStr);    
   $newImg = imagecreatetruecolor($width,$height);    $imgX = imagesx($img);    $imgY = imagesy($img);    imagecopyresized($newImg,$img,0,0,0,0,$width,$height,$imgX,$imgY);
   switch ($suffix) {
       case 'jpeg': imagejpeg($newImg,$path); break;
       case 'png' : imagepng($newImg,$path);  break;
       case 'gif' : imagegif($newImg,$path);  break;    }
   return $path; }

和图片上传类似,多了庞大的GD库加入:

  1. 获取文件后缀

  2. 获取点'.'的位置

  3. 拼接新路径

  4. 将原图的整个文件读入一个字符串

  5. 将字符串转成资源格式

  6. 创建新图

  7. 获取原图的宽高

  8. 用原图填充新图

  9. 根据后缀名保存新图


以上是关于MVC--图片上传的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring MVC 和 Html 上传图片

图片上传

项目相关MVC中使用WebUploader进行图片预览上传以及编辑

ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例

asp.net mvc  Ajax.BeginForm 异步上传图片的问题

MVC图片上传详解