`
kirenenko04
  • 浏览: 146453 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

头像上传数据库处理

    博客分类:
  • php
阅读更多

文件上传后数据库怎么处理比较好?
收集文件地址比较好.

PS.已经尝试了上传许多文件后,个人认为在数据库中直接放二进制的图片数据会显得很混乱.
有可能因为截断问题把图片搞的很不完整.所以存放路径成为比较理想的方案.

PS.图像地址存放,这个字段的类型选择BLOB原因是便于存放多个文件地址;
加入地址的时候,使用特殊符号分割加入;
提取时候就可以获取多个文件地址了;

先总汇一下这次的任务
任务内容:上传修改用户头像

步骤:
1.user_portrait.php 负责收集用户需要的头像的表单,
  如果已经设置过头像那么显示当前的头像.

2.do_user_portrait.php 负责上传至服务器的文件系统中,
  并且将文件的相对路径存放到数据库.
  通过SESSION保存好传送中发生的问题和数据库写入发生的问题.或者是传送成功的信息.

3.反馈SESSION保存的执行结果到达user_portrait.php.
  反馈完毕后 清理相关SESSION值.

第一步:
  显示当前的头像.这个头像需要通过检索数据库,找到头像地址,找到这个文件,
  选择好HTTP传送格式;
  然后再进行绘制打印,
  为了便于使用所以写成了函数;

function read_image($file_name,$type)
{  
    //绘制打印一个图片文件,
    //$file_name完整的相对路径,$type格式扩展名.gif,.jpg,.png

    if($type==".jpg")
    {
        $image=ImageCreateFromJPEG($file_name);
        header("Content-Type: image/jpeg");
        ImageJPEG($image);
    }
    elseif($type==".png")
    {
        $image=ImageCreateFromPNG($file_name);
        header("Content-Type: image/png");
        ImagePNG($image);
    }
    elseif($type==".gif")
    {
        $image=ImageCreateFromGIF($file_name);
            header("Content-Type: image/gif");
        ImageGIF($image);
    }
    
    return $image;
}


因为要显示在指定的页面,
所以插入这样的语句就可以显示

<img src="show_img_db.php?user_id=$user_id">

 
show_img_db.php 这个页面负责的是 :检索数据库,找到头像地址,找到这个文件,分析出文件扩展名;

调用read_image($file_name,$type)来执行打印当前的头像;

那么扩展名可以用这样的函数来获取:

function get_file_name($str)
{ 
   //获得文件的格式扩展名$str为原来的扩展名;
    $pos= strrpos($str, ".");
    if  ($pos !== false)
    {  
        $len=strlen($str)-$pos;
        $file_name=substr($str,$pos,$len);
        return $file_name;
    }
}

 
show_img_db.php中调用显示图像方法可以这么写;

//检索数据库省略;
$row=mysql_fetch_array($result);

//获取文件格式名
$type_name=get_file_name($row["user_img"]);

//调用图片文件的绘制打印函数
read_image($row["user_img"],$type_name);

 
第二步:
判断好文件的大小,格式,再执行写入服务器;
由于是头像文件.所以务必设置的小一些,否则会很奇怪.
对于各种问题设定错误信息;反馈到前面一页

//上传图片格式文件到达$save_dir指定目录,$form_elem是文件控件名

$allow_type=array("image/jpeg","image/pjpeg","image/x-png","image/png","image/gif");
$save_dir="user_img"."/";
$max_size=5000;
    if(isset($_FILES[$form_elem]))
    { 
        if($_FILES[$form_elem]['size']<=$max_size)
        {//长度正确
        if(in_array($_FILES[$form_elem]['type'],$allow_type))
        { 
            if($_FILES[$form_elem]['error']==0)
            {     //获得图像格式后缀名;例如".gif"
                    $file_type_name=get_file_name($_FILES[$form_elem]['name']);
                  //用户头像地址规则:user_img/时间戳_用户名.文件扩展名
                    $thefile=$save_dir.time()."_".$username.$file_type_name;

                if(!move_uploaded_file($_FILES[$form_elem]['tmp_name'],$thefile))
                {
                    //上传失败
                        $_SESSION['error']['UPDATE_IMG_ERROR']="upload file faild!";
                        header("Location: user_portrait.php");
                        exit();
                }
                 else     
                 {
                     //上传成功
                    //取出文件地址
                    $user_img=$thefile;
                    
                    //传入数据库
                    if(!$conn=@mysql_connect("localhost","root","1"))
                    {
                        die("Could not connect db!");
                    }
                    
                    if(!@mysql_select_db("mini_bbs"))
                    {
                        show_error();    
                    }
                    //获取用户编号
                    $user_id=(int)(get_user_id_from_username($username));
                    
                    
                    $query="update user 
                                    set user_img='$user_img'
                                    where user_id=$user_id";
                    
                    
                    //执行写入
                    if(!$result=@mysql_query($query))
                    {   //写入失败设定UPDATE_IMG_ERROR信息
                         $_SESSION['error']['UPDATE_IMG_ERROR'].="<br />upload file to db 

error!";
                            header("Location: user_portrait.php");
                            exit();
                    }
                    else
                    {  //写入成功设定UPDATE_IMG_SUCCESS信息
                        $_SESSION['error']['UPDATE_IMG_SUCCESS']="update image ok!";
                        //记录格式扩展名.jpg,.gif,.png
                        $_SESSION['image']['type']=substr($file_type_name,1,strlen

($file_type_name)-1);
                        header("Location: user_portrait.php");
                        exit();
                    }
                 
                 }
                   
            }
        }
        else
        {  //格式不正确
            $_SESSION['error']['UPDATE_IMG_SUCCESS']="ERROR:file type must be:jpeg,gif,png!";
            header("Location: user_portrait.php");
                        exit();
        }
    }
    else
    {
        //长度太大
        $_SESSION['error']['UPDATE_IMG_SUCCESS']="ERROR:the file is too big!";
        header("Location: user_portrait.php");
                        exit();
    }
  }

总结:
选择数据库来保存地址是有目的的.
因为一个时间用户只能由一个头像地址,也可能希望从自己拥有的头像中选中以前上传过的头像,
也就是服务器端拥有很多用户头像.数据库只要记录下一枚最新修改的头像地址就好了;所以
还是需要数据库来记录这个消息的;

分享到:
评论

相关推荐

    JSP基于SSM交通车辆违章处理违章查询网站+源代码+文档说明+数据库.zip

    JSP基于SSM交通车辆违章处理违章查询网站毕业源码案例设计 java后台框架: SSM(SpringMVC + Spring + Mybatis) 程序调试软件:myEclipse/Eclipse/Idea都可以 数据库:mysql (1)该系统有管理员和用户(主要为驾驶员...

    springboot网约车投诉平台(源码+数据库)271611

    我要投诉:投诉平台,投诉车辆车牌 订单编号 投诉类型 投诉内容,上传附件(视频/图片) 投诉平台:(选择)滴滴出行、曹操出行、花小猪出行、T3出行、首汽约车、携程旅行、阳光出行、哈啰出行、嘀嗒出行、美团打车...

    《在线视频播放平台》-无数据库账密-带数据库文件.zip

    我们系统中有大量的文件:用户头像,视频的封面,视频文件 我们将这些文件存储在磁盘的固定位置,使用Nginx提供HTTP服务。《在线视频播放平台》前后台-前端功能演示,Redis实现首页热点数据缓存 防止缓存雪

    EF一般处理程序登录注册.rar

    利用一般处理程序 和 Ajax 实现登录注册 注册包含上传到指定文件夹,并将名称保存到数据库。登录时输入账号会查询头像并显示头像。 点击登录时候会判断是否正确。没有用BUG,包含数据库 已经美化处理,下载即用

    摄像头拍照/本地图片上传(缩放\裁剪)

    其中上传用到两个一般处理程序,在一般处理程序中调用的数据库相关操作。 本人项目用到刚刚写的,确认可以使用。效果地址:http://yepcom.cn。可注册后到http://yepcom.cn/Profile/ProfileView上传头像。

    ASP.NET开发实战1200例(第Ⅰ卷)第二十章

    实例531 读取数据库中上传的相册照片并显示 806 实例532 将个人头像以二进制流形式存储到 数据库中 807 实例533 读取并显示数据库中以二进制形式 存储的头像 809 实例534 解决同名文件覆盖问题实现上传图片 统一命名...

    泥人论坛 新浪SAE版v1.0 beta2.zip

    处理头像上传不显示问题; 2.处理IE6下图片多出蓝色边框问题; 3.修改上传图片过滤不严禁的安全问题; 4.添加会员密码修改功能; 5.处理后台修改网站相关配置信息不成功的问题; 6.限制...

    springboot+大学生心理咨询平台021107(附源码+数据库)

    管理员主要是进行学生相关信息以及教师相关信息进行增删改查等功能(上传下载); 学生功能模块实现学生在线的心理测评功能,学生可以查看相关的测试报告,如若需要心理辅导,学生可以预约心理教师进行辅导,也可以...

    php基于Vue和ThinkPHP的单身公寓管理系统APP141003(附源码+数据库)

    租客用姓名、性别、手机号(唯一、11位、验证格式)和身份证号(唯一、18位、验证格式)注册,上传头像 租客登陆后可以挑选房间,支持线上预定房间到店后付款和线上支付直接租房,支付押金(一个月房租) 租客可以对...

    微信小程序学生宿舍设备报修app设计后端SSM+源代码+文档说明+数据库.zip

    开发技术:微信小程序客户端 + Java后台服务器端 + mysql数据库 设计一个基于微信小程序学生宿舍报修app,主要是给宿舍的学生使用!当宿舍有各种设备坏了,比如水电出问题了,门窗烂了坏了,各种生活用户坏了都可以...

    CoolxLib:很早的,android 内部使用基础框架 网络请求、数据库操作、通用基础工具类、日志系统、缓存

    CoolxLib主要模块功能:网络请求模块,数据库操作模块,万能工具类模块,上传头像模块,网络请求模块: 支持自动解析JSON数据 支持可配置缓存 支持网络异常自动重试机制 支持网络错误自动处理 无缝的支持GZIP来减少数据...

    基于Springboot SSM框架+Mysql的电子商务商城项目源码+项目说明(本科课程设计).zip

    当确定了数据处理顺序后,就应该分析某个用户对应的功能有哪些,以“用户”数据为例,相关功能有:注册、登录、修改密码、修改资料、上传头像…… 然后,还是需要确定以上功能的开发顺序,通常,遵循“增 &gt; 查 &gt; 删...

    二手书交易平台后端开发.docx

    用户认证和管理: 开发用户认证系统,包括注册、登录、密码重置等功能,并实现用户信息管理,如个人资料修改、头像上传等。 商品管理: 实现商品的增删改查功能,包括商品的发布、编辑、删除等操作。 交易流程: ...

    基于SpringBoot的网上绿植店管理系统的设计与实现101512(附源码+数据库)

    首页是商品展示。...用户信息管理模块,(有头像图片上传) 地址管理模块, 购物车模块, 订单结算模块(需要有支付宝模拟支付) 管理员登录: 商品管理(增删改查商品) 订单管理(处理订单发货等)

    Python基于Django图书借阅管理系统+源代码+文档说明+数据库.zip

    管理员登录后台可以管理图书分类信息,发布新图书信息,管理修改已经存在的图书记录,管理所有读者信息,登记图书借阅业务,管理图书借阅记录,如果有读者要归还图书可以处理登记归还时间等。 实体ER属性如下: ...

    起源论坛单文件完整版源代码

    小站长网!...技术支持Js10@163.comQQ:1091511195 ...作为文件直读和头像上传的基本组件,未安装组件将不能使用头像上传和头像管理 Persits.Jpeg 图形处理组件,已经内置KEY,未安装或无效则不能使用头像缩略图的生成

    太空论坛spacebbs 1.0 beta 1

    运行在服务器上正常,如果在本地运行,因为是locahost/目录名/ 这时上传的文件路径是locahost/目录名/upfiles 而不是locahost/目录名/bbs/upfiles 3、首页不能直接 登录,必须要转login.aspx的处理方法,...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例223 以二进制形式上传文件到数据库 285 实例224 上传文件到服务器 287 实例225 限制上传文件的大小 288 实例226 限制上传文件的类型 291 实例227 上传多个文件到服务器 292 4.2 文件下载 294 实例228 通过链接...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例223 以二进制形式上传文件到数据库 285 实例224 上传文件到服务器 287 实例225 限制上传文件的大小 288 实例226 限制上传文件的类型 291 实例227 上传多个文件到服务器 292 4.2 文件下载 294 实例228 通过链接...

    PHP程序开发范例宝典III

    实例087 在弹出的对话框中选择个性头像 130 实例088 自动关闭的广告窗口 131 实例089 关闭IE主窗口时,不弹出询问对话框 132 实例090 弹出提示对话框并重定向网页 133 3.8 弹出网页对话框 134 实例091 弹...

Global site tag (gtag.js) - Google Analytics