明辉站/网站教程/内容

使用php+mysql保存与输出文件

网站教程2024-01-29 阅读
[摘要]本地文件上传到服务器后,服务器的脚本对文件进行保存,一般有两种方式,一种是作为 文件保存到机器的特定目录下,但是这里就有很多诸如文件重名带来的种种不便之处,有的程 序自动改文件名字,把名字加上上传时间等方法以保证文件名的唯一性,这样失去了文件的原 始名字,通过文件名查询特定的文件信息也有很多困难,...
本地文件上传到服务器后,服务器的脚本对文件进行保存,一般有两种方式,一种是作为 文件保存到机器的特定目录下,但是这里就有很多诸如文件重名带来的种种不便之处,有的程 序自动改文件名字,把名字加上上传时间等方法以保证文件名的唯一性,这样失去了文件的原 始名字,通过文件名查询特定的文件信息也有很多困难,不利于文件的统一管理;一种是把文 件保存到数据库中利用数据库的强大功能,可以方便的实现文件的各种操作。本文采用的是第 二种方法。 这一组程序演示了,如何将硬盘的一个文件通过网页,上传到服务器的数据库里面,并且 读出文件的内容。 使用说明: 一共有5个程序,说明如下: 1. file.sql --- 本程序要用到的数据库表的结构[注:数据库用的是test] 2. upload.php --- 上传表单 3. submit.php --- 上传处理程序 4. show_info.php --- 显示部分上传的文件信息 5. show_add.php --- 显示[下载]文件 ////////////////////////////////////////////////////////////////////// (1)file.sql --- //简要说明 保存上传得文件的基本信息的数据库结构,此处注意保存文件内容的字段,使用longtext类型 因为普通的blob类型最大存储64k字节。另外,一般php的默认配置最大上传文件为2m,如果上 传的文件特别大,莫忘了调整php.ini的设置哦。 //文件源码 create table receive( id int not null auto_increment, #主键,自动累加 file_data longblob, #文件内容 file_type varchar(100), #文件类型 file_name varchar(255), #文件名字 file_size int, #文件大小 primary key(id) #主键 ) ////////////////////////////////////////////////////////////////////// (2)upload.php --- //简要说明 上传界面,用户选择文件,然后提交给submit.php处理 值得注意的是一个 max_file_size的隐藏值域,通过设置其value可 以限制上载文件的大小。 //程序源码
选择上传文件
////////////////////////////////////////////////////////////////////// (3)submit.php --- //简要说明 把用户上传得文件连同文件的基本信息保存到数据库里 //程序源码 显示上传文件信息"; } else { echo "你没有上传任何文件"; } ?>////////////////////////////////////////////////////////////////////// (4)show_info.php --- //简要说明 从数据库里取出文件的基本信息[文件名和文件大小]。 //程序源码 <1) die("error:="" no="" this="" recorder");="" 下面两句程序也可以这么写="" $row="mysql_fetch_object($result);" $name="$row-">name; //$size=$row->size; $name = mysql_result($result,0,"file_name"); $size = mysql_result($result,0,"file_size"); mysql_close($conn); echo "
上传的文件的信息:"; echo "
the file's name - $name"; echo "
the file's size - $size"; echo "
附件"; ?> ////////////////////////////////////////////////////////////////////// (5)show_add.php --- //简要说明 从数据库里取出文件内容 //程序源码 <1) die("error:="" no="" this="" recorder");="" $data="mysql_result($result,0," file_data");"="" $type="mysql_result($result,0," file_type");"="" $name="mysql_result($result,0," file_name");"="" mysql_close($conn);="" 先输出相应的文件头,并且恢复原来的文件名="" header("content-type:$type");="" header("content-disposition:="" attachment;="" filename="$name" );"="" echo="" $data;="">本程序在 win2000 pro + apache 1.13.19 + php 4.0.5 + mysql 3.23.36 下通过。

……

相关阅读