admin 管理员组文章数量: 887021
2024年2月28日发(作者:灰色颜色代码)
维普资讯
基于PHP和MySQL的图片上传和显示 2007正 基于PHP和MySQL的图片上传和显示 广西财经学院 徐 辉 在开发基于Web的网络考试系统的 传的题目图形文件;添加两个多行文本 值得注意的是,上述代码适用于 名称分别为question、ans,分别存放题 MySQL 4.1或以上版本。此外,在执行 过程中,需要上传题目的插图和考生的照 框,片等。本文以题目的图片上传为例,介绍 目文字、答案;添加一个提交类型的按钮。 SQL语句之前,必须先在MySQL服务器 如何利用PHP和MySQL数据库,实现图 同时将表单的Method属性置为Post, 中执行set names’gbk’语句,设置 片上传、存储和显示的程序设计方案。 Enctype属性设置为Multipart/form— MySQL的字符集为GBK,这样才能在 1 PHP上传文件的相关技术 data,Action属性值设置为PHP程序文件 MySQL数据库中正确地存储题目的汉 — PHP是目前流行的一种Web服务器 名(如saveexam.php)。字。如果采用MySQL 4.0或以下版本,则 端脚本编程语言。PHP 4.1及以上版本提 供了一个全局数组¥FILES,存放所有 上传的文件信息。假设表单的文件域元素 名为pictfile,则¥FILES数组含有以下 数组元素:¥FILES[’pictfile’][’name’] 存放上传的原文件名称;¥ FILES [’pictfile’][’type’]存放文件的MIME类 型(如image/gif);¥FILES[’pictfile’] [’size’]存放已上传文件的大小,单位为字 节;¥FILES[’pictfile’][’tmp name’] 存放文件被上传后在服务端存储的临时 文件名;¥FILES[’pictfile’][’error’]存 放该文件上传相关的错误代码。如果表单 中没有选择上传的文件,则¥FILES [’pictfile’][’size’]的值将为0,¥FILES [’pictfile’3E’tmpname’]将为空字符串。 ¥ FILES数组元素的第1个下标 ’pictfile’是随表单的文件域元素名的改变 而变化的。 2图片的上传和保存 2.1设计存储图片的表结构 在MySQL中创建一个exam数据 库,然后在exam数据库中创建一个tiku 表,存放考试题库的所有题目,其sQL语 句为: CREATE TABLE tiku(id INT(11) NOT NULL AUTOINCREMENT, question TEXT NULL,pict MEDIUMBL0B NULL, ans TEXT NULL。PRIMARY KEY(id))ENGINE =MyISAM DEFAULT CHARSET=gbk COLLATE=gbkbin; 其中id字段为题目序号,question字 段存放题目的内容,pict字段存放题目的 插图,ans字段存放题目的答案。 2.2制作上传图片的HTML表单 创建一个含有表单(Form)的HTML 文件,表单中必须加入<Input Name= pictfile Type一”file >元素,用来选择上 2.3保存图片到MySQL数据库 表单内容上传到Web服务器后,需 要由PHP脚本程序对上传的内容进行接 收、处理,并存储到MySQL数据库中。根 据全局数组元素¥FILES[’pictfile’] [’tmpname’]的值是否为空,判断是否 上传了图片。如果其值非空,说明上传了 图片,由该数组元素得到上传图片的临时 文件名,读取该文件的内容,再用bin2hex ()函数将二进制文件数据转换为十六进 制数据,才能正确地将图片数据存储到 MySQL数据库。保存图片的PHP程序 saveexam.php的主要代码如下: <?php ¥conn=mysqlconnect(” localhost”,”root”, ); mysqlselectdb( exam ); ~mysql~query( set names’gbk” ); ¥photoname=¥FILES[-’pierfile’] [’tmp name’]; ¥ques=¥POST[-’question’]; ¥ans=¥P0sT[’ans’]; if(!empty(¥photoname)){//构 造INSERT语句 ¥photo = fread (fopen ( ¥photoname,” r”), filesize (¥photoname)); ¥photo一’Ox’.bin2hex(¥photo); ¥sql=”INSERT INTO tiku (question,pict,ans)VALUES(’¥ques’, ¥photo,’¥ans’)”; }else{ ¥sql=”INSERT INTO tiku (question,ans)VALUES(’¥ques’,’ ¥ans’)”; } mysql—query(¥sql,¥conn);//在 tiku表中插入一条题目 ?> 要删除程序中的¥photo一’Ox’.bin2hex (¥photo)这一语句。 3图片的读取和显示 利用上述程序将题目和插图添加到 tiku表后,tiku表中id字段的值是自动生 成的。通过检索数据表的数据,得到一个 查询结果集,将结果集的每行数据输出到 Web页面上。对于图片的显示,需要在 Web页面上加入<img src一 ’showpict.php?id一表的ID字段值’>元 素,将表中相应记录的图片显示在页面 上。以下PHP程序显示tiku表的所有题 目内容(含插图)。 <? //此处为连接MySQL,打开exam数 据库的代码 ¥rs=mysqlquery(”select*from tiku”,¥conn);while(¥row mysqlfetch array(¥rs)){ ¥id=¥row[’id’]; echo¥row[-’id’].”、”; echo¥row[’question’].”<br >”;//输出题目 if(!empty(¥row[’pict’])) echo <img src= ’showpict.php?id=¥id’><br>”;//显 示插图 } ?> 上述程序中,<img>元素的SRC属 性指定图片内容是由showpict.php程序 输出的。showpict.php程序为显示图片程 序,它根据表中题目的ID字段值,查询相 应题目的pict字段信息(即图片内容),直 接输出图片的二进制数据。showpict.php 程序的主要代码如下: <? //此处为连接MySQL,打开exam数 据库的代码 (下转第77页)
维普资讯
第2O卷第9期 电脑开发与应用 (总703)・77・ 实验室计算机自动关机系统的开发 广东梅州嘉应学院 刘伟峰 高校计算中心实验室机器台数多,分 2关机系统的实现 出现跨天情形(为24小时运行设计),则 在Delphi中关机的实现只需使用 置LabRDat部范围广,系统的正常关闭对计算机系统 e及Lab Rtime变量为空 并执行第一步)。 ShutDown(EWX—P0WEROFF+EWX 的稳定及硬盘的使用寿命有不可估量的 在程序运行中,通过Time控件不间 FORCE);语句就可以实现,该指令是使 影响。在学生上机后若常有系统没有关闭 — 的情形下就直接关闭总电源,轻则会造成 系统电源强制关机。不过在实际操作中需 断地判断当前时间与关机时间差值:如果当前时间+5min ̄一设定关机 系统崩溃,重则会对计算机相关硬件造成 加入许多的控制条件,如:关机时间的读 则启动(以当前时间一关机时间)的 物理性伤害,并对计算机电源及主板、内 取判断、分类、排序,网络对时,关机(时 时间,屏蔽Ctrl 倒记时提示程式(即系统在近关机时间5 存都有一定的冲击。所以这一小小环节可 间)参数设置,程序随系统启动, t+Del,进程隐藏,全局性Hook(挂 分钟,提示关机);是牵动计算机整体性能的使用及维护的 +Al如果当前时间>一设定时间<一(设 钩:鼠标、键盘操作的捕获)的实现。 关节点之一,切不可大意。 n)则启动20s的关机 程序关机实现的关键环节,是通过当 定关机时间+10mi在实验室管理中,如果采用人工每台 机器检查关机,一是对实验室工作人员工 前系统的时间判断时否为关机时区,在实 倒记时提示程式并锁定鼠标及键盘(使系 统在已过关机时间及该时段后1O分钟 作量的挑战;二是人为失误的不可避免 验室上机的操作员是均能修改系统时间 内,系统禁止使用)。 性,势必会出现个别机器漏关的问题。在 的。所以在程序设计中:学生在上机的时候会有个别学生会 首先加入了程序起动后每隔一定时 上机守则中注明每一位上机学生都必须 同时开多部计算机而又不使用的习惯,为 在使用完计算机后必须进行关机操作,也 长(一分钟)自动与服务器校对时间的功 在开发程 这样就充分避免了使用者修改时 避免计算机的这类无形的损耗,会出现部分学生在上机时间到了后并不 能模块,序中加入系统无人使用判断。当计算机在 退出系统,仍占用机器(特别是学生在自 间的问题及系统时间不统一的问题。其次是关机时间的判定,关机时间的 运行中,如5分钟内无鼠标、键盘操作则 由上机时段)给实验室管理人员带来诸多 先关闭显示器;而后在20min后开启显示 不便。基于以上种种原由,我在结合在中 格式及录入设置,读取;系统关机的时间 n后将 并设 器并弹出关机提示窗,提示在lmi心实验室日常工作经验,在Delphi 7平台 表应放置于专属资源共享服务器中,用户可以确认取消自动关 充分确保表 自动关闭系统,下编写了针对机房实现,开发自动提示并 置通用用户只有读取的权限,关机的系统。 文件的安全性;在表中设置对表修改的时 闭并继续使用本计算机。1程序开发简述 间也很重要,因为程序可以通过对表修改 最后,程序的稳定性及容错性也是及 其重要的,任何一个好的程序都得通过许 多不断的改进及测试而获得;限于篇幅, 在程序项目开发时请遵循正规的开 的时间来判断是否需要重新读人关机信 g;表按:每天,每周,每月和一次性分类, 发步骤,将整个开发过程分期、有规划有 并相应的时间来设置具体的关机时间。 目的地分步执行,分步进行(这样可以避 程序在读取关机信息表时 免许多开发中的重复的问题)。在此简略 的提一下:首先,是软件的可行性研究; (包括软件设计的软硬件基础);其次,是 第1步: 在此就程序开发的主体思路及实现方式 的叙述到此了,有兴趣的读者可以与作者 联系。 判断Lab RDate及Lab Rtime变 (上接第74页) if(¥REQUEST[’id’]){ 若为空则读取信息表表头时 代码的编写,分模块功能程序原代码编 量是否为空,间并将其值分别置于Lab RDate及Lab 辑;最后,总体实现及调试。许多程序员在 me变量;(该变量是供程序在其后读 程序开发、设计中不喜欢使用传统的程序 Rti取关机信息表时判断该表是否有改动,如 开发模式,而一上来就狂写程序源码。这 表头信息与变量相同,则信息表无改动则 是很错误的,往往会在一阵的热情过后, 直接跳出);而后执行下一步; 才发觉自己在程序的编辑运行中会常常 第2步: 碰壁,只有一堆纷繁复杂的代码。改了又 程序在读取表中数据后,首先判断是 改,弄得自己也分不清程序运行的最后目 否为当前实验室,实验室的判断由读取当 的是什么(不是夸张,不信你调出你几年 前没有文档及注释的程序来看会不会有 前计算机名来完成,前提是:为每个实验 A—Z实验室号+相应的 抓不着头绪的感觉,也许你不会,那恭喜 室中的计算机按(¥sql一”select pict from tiku where id= .¥REQUEST[’id’]; ¥row—mysql—fetcharray (mysqlquery(¥sql,¥conn)); echo¥row[’pict’]; ) ?> 4结束语 本文介绍了利用PHP和MySQL数 你,你记忆力超人,还或是你的程序就只 桌号)设置不同的计算机名;如果是当前 三、二行。如备处理是可以用,但很多功能 实验室,则续而判断其关机时间是否大于 据库来实现图片的上传、存储和显示的程 若成立则放人当前关机数 序设计方法,这一方法编程简单,容易实 是不能实现的),正规的文档记录是很重 等于当前时间,据列表;而后对关机时间数据进行排序, 要的,它标记着你程序的重点、运行流程、 现,执行速度快。对这一方法加以扩充,也 并以最近当前时间为首次关机时间;在关 目标及实现方法、步骤,还可以有开发中 能够用于其他类型文件的上传。在开发各 机时间数据读人后为保持关机时间的可 的酸甜及所遇难点。至于开发的注意事项 种web应用系统方面,具有很好的应用 更新的原则在程序运行期间隔一定时长 我在这就不再一一诉说了,有许多编程的 执行第一步(在程序运行中如果系统时段 价值。书都有详细介绍。 *基金项目:嘉应学院“新世纪教育教学改革工程”校级重点项目。
版权声明:本文标题:基于PHP和MySQL的图片上传和显示 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1709066528h537382.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论