一、文件系统概述
在任何计算机设备中,各种数据、信息、程序主要以文件的形式储存。一个文件通常对应着磁盘上的一个或多个存储单元,利用目录可以有效地对文件进行区分和管理。负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统,从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统,具体地说,它负责为用户建立文件,存入读出、修改、转储文件,控制文件的存取,当用户不再使用时删除文件等。
1、文件类型
PHP是以UNIX的文件系统为模型的,因此在Windows系统中我们只能获得“file”,“dir”或者“unknown”三种文件类型。而在UNIX系统中,我们可以获得“block”、“char”、“dir”、“fifo”、“file”、“link”和“ unknown”7种类型,各种文件类型的详细说明如下所示。
文件类型 | 描述 |
---|---|
block | 块设备文件,如磁盘分区、光驱等 |
char | 字符设备是指在I/O传输过程中以字符为单位进行传输的设备,如键盘、打印机等 |
dir | 目录类型。目录也是文件的一种。 |
fifo | 命名管道,常用于将信息从一个进程传递到另一个进程。 |
file | 普通文件类型 |
link | 符号链接,是指向文件指针的指针,类似windows中的快捷方式 |
unknown | 未知类型 |
<?php
echo filetype("test.txt");//输出:file
echo filetype("images");//输出:dir
?>
2、文件属性
在进行编程时,需要使用到文件的一些常见属性,如文件的大小、文件的类型、文件的修改时间、文件的访问时间和文件的权限等。PHP中提供了非常全面的用来获取这些属性的内置函数,如下所示。
文件类型 | 描述 |
---|---|
file_existes($path| $filename) |
检查文件或目录是否存在 |
filesize($filename) | 获取文件的大小 |
is_readable($filename) | 判断文件是否可读 |
is_writeable($filename) | 判断文件是否可写 |
is_executable($filename) | 判断文件是否可执行 |
filectime($filename) | 获取文件的创建时间 |
fileatime($filename) | 获取文件的最后访问时间 |
filemtime($filename) | 获取文件的最后修改时间 |
stat($filename) | 获取给定文件的大部分属性值,返回关于给定文件有用信息的数组 |
filetype($filename) | 只读,返回文件的类型,如文件或文件夹 |
realpath($path) | 返回文件的绝对路径 |
pathinfo($path) | 以数组形式返回文件的路径和文件名信息 |
dirname($path) | 返回文件相对于当前文件的路径信息 |
basename($path) | 返回路径中的文件名部分 |
<?php
$file = 'tang.txt';
echo "<br>文件名:" .basename($file); //echo "<br>文件名:".__FILE__;
$patharr = pathinfo($file);
echo "<br>文件扩展名:".$patharr['extension'];
echo "<br>文件属性:" . filetype ($file);
echo "<br>路径:". realpath($file);
echo "<br>大小:" . filesize ($file);
echo "<br>创建日期:" . date('Y-m-d H:i:s',filectime($file));
?>
二、目录的基本操作
常用目录操作函数
函数名 | 描述 |
---|---|
mkdir(pathname) | 新建一个指定的目录 |
rmdir(dirname) | 删除目录,该目录必须为空 |
getcwd() | 取得当前文件所在的目录 |
chdir(dirname) | 改变当前目录 |
opendir(path) | 打开目录,返回目录的指针 |
closedir($dir_handle) | 关闭目录,参数为目录指针 |
readdir($dir_handle) | 遍历目录 |
scandir(path, sort) | 以数组形式遍历目录 |
rewinddir($dir_handle) | 将目录指针重置到目录开头处 |
1、创建和删除目录
①mkdir()
- 新建一个指定的目录
mkdir(string $pathname, int $mode = 0777, bool $recursive = false): bool
- 参数
- pathname 目录的路径。
- mode 默认的 mode 是 0777,意味着最大可能的访问权
注意:
mode 在 Windows 下被忽略。指定模式需要是八进制数,由四个数字组成,该数应以零打头。 - recursive 允许递归创建由 pathname 所指定的多级嵌套目录。
组成 $mode 参数的四个数字的含义如下所示:
- 第一个数字通常是 0;
- 第二个数字规定所有者的权限;
- 第三个数字规定所有者所属的用户组的权限;
- 第四个数字规定其他所有人的权限。
$mode 参数中,除第一个数字外,其它三个数字的取值范围如下(如需设置多个权限,可以将对应权限的数字相加):
- 1 => 执行权限;
- 2 => 写权限;
- 4 => 读权限。
<?php
$dir = './test/ttt';
if(is_dir($dir)){
echo "该目录已存在!";
}else{
if(mkdir($dir,0777,true)) echo '目录创建成功!';
}
?>
②rmdir()
- 删除目录
同普通文件类似的,如果确认某个目录已经不会被使用了,那么就可以把这个目录删除。在 PHP 中可以使用 rmdir() 函数来删除指定的目录,该函数的语法格式如下所示:
rmdir(string $dirname): bool
- 参数
- $dirname 为要删除的目录路径。
- 注意:使用 rmdir() 函数删除指定目录时,这个目录必须是空的,而且要有相应的权限。函数执行成功时返回 TRUE,执行失败则返回 FALSE,如果删除一个不为空的目录还会产生一个 E_WERNING 级别的错误。
<?php
$dir = './test';
if(is_dir($dir)){
if(rmdir($dir)) echo '目录删除成功!';
}else{
echo "目录不存在!";
}
//如果存在文件则 需要递归删除
function delDir($directory){ //自定义函数递归的函数整个目录
if(file_exists($directory)){
if($dir_handle=@opendir($directory)){
while($filename=readdir($dir_handle)){
//var_dump($filename);
if($filename!='.' && $filename!='..'){ //一定要排除两个特殊的目录
$subFile=$directory."/".$filename;
if(is_dir($subFile)){ //如果是目录条件则成了
delDir($subFile); //递归调用自己删除子目录
}
if(is_file($subFile)){ //如果是文件条件则成立
unlink($subFile); //直接删除这个文件
}
}
}
closedir($dir_handle);//关闭目录资源
rmdir($directory);//删除空目录
}
}
}
delDir("test");//调用delDir函数
?>
2、获取和更改当前工作目录
① getcwd()
— 取得当前工作目录
<?php
echo getcwd() . "<br/>";
echo dirname(__FILE__);
?>
② chdir()
— 改变目录
<?php
echo getcwd()."<br>";
@mkdir("./test1");
@chdir('./test1');
echo getcwd();
?>
3、遍历目录
<?php
function readFileFromDir($dir)
{
if(!is_dir($dir)) return false;
$handle=opendir($dir); //打开目录
while(($file=readdir($handle))!==false)
{
if($file=='.'||$file=='..') //判断是否为.或..,默认都会有
{
continue;
}
$file=$dir.DIRECTORY_SEPARATOR.$file; // DIRECTORY_SEPARATOR系统分隔符 /、\
if(is_file($file)) //是文件就输出
{
print $file.'<br/>';
}
elseif(is_dir($file)) //如果为目录
{
readFileFromDir($file); //递归查询
}
}
closedir($handle); //关闭目录
}
$dir = '../test';
readFileFromDir($dir);
echo "<hr>";
function readAllFileFromDir($dir)
{
if(!is_dir($dir)) return false;
$dirs = scandir($dir, 1);
foreach($dirs as $d){
if($d =='.' || $d =='..'){
continue;
}
$file = $dir.DIRECTORY_SEPARATOR.$d; // DIRECTORY_SEPARATOR系统分隔符 /、\
if(is_file($file)) //是文件就输出
{
print $file.'<br/>';
}
elseif(is_dir($file)) //如果为目录
{
readAllFileFromDir($file); //递归查询
}
}
}
readAllFileFromDir($dir);
?>
三、文件的基本操作
1、文件的复制、移动和删除
语法 | 描述 |
---|---|
copy(string $source, string $dest) | 复制文件 |
unlink(string $filename) | 删除文件 |
rename(string $oldname, string $newname) | 重命名文件或目录 |
ftruncate(resource $handle, int $size) | 将文件截断到给定的长度 |
is_file(string $filename) | 判断给定文件名是否为一个正常的文件 |
① copy()
- 将一个文件复制到指定目录中
- $source:源文件路径;
- $dest:目标路径,如果文件存在,则会将其覆盖;
<?php
if(copy('./test/1.txt', './test2/2.txt')){
echo '文件复制成功';
} else {
echo '文件复制失败,源文件可能不存在';
}
?>
② rename()
- 重命名一个文件或者目录
- 对于非空文件夹,只能在同一盘符下移动;
- 对于空文件夹,rename() 可以在不同盘符间移动。但是目标文件夹的父目录必须存在;
- 对于文件,rename() 也能在不同盘符之间移动。
<?php
if(file_exists('./test/1.txt')) //判断源文件是否存在
{
if(rename('./test/1.txt', './test1/2.txt')) //移动到当前路径并重命名为tang.txt
echo '文件移动并重命名成功';
else echo '文件移动失败';
// 移动文件夹
// rename('./test', './test2');
// rename('./test2', './test1');
}
?>
③ unlink()
- 删除指定的文件
- $filename 为要删除的文件路径;
<?php
//删除文件示例
unlink('./test.txt');
?>
2、获取文件属性函数
<?php
var_dump(pathinfo('test.txt'));
?>
3、文件操作的一般方法
目录可以进行打开、读取、关闭、删除等操作,文件的操作与对目录的操作有类似之处,操作文件的一般方法有打开、读取、写入、关闭等。
PHP对文件操作的一般流程是:①打开文件。②读取或者写入文件。③关闭文件。这些操作都是通过相应的文件访问函数实现的。
① fopen()
- 打开文件
PHP 中可以使用 fopen() 函数来打开文件或者 URL。如果打开成功,则返回文件指针资源;如果打开失败则返回 FALSE,该函数的语法格式如下所示:
fopen(string $filename, string $mode)
- 参数说明
- $filename:为待打开文件的 URL,这个 URL 可以是文件所在服务器中的绝对路径,也可以是相对路径或者网络资源中的文件;
- $mode:用来设置文件的打开方式(文件模式)。具体的值可以从下表中选取:
model 描述 r 以只读方式打开,将文件指针指向文件头。 r+ 以读写方式打开,将文件指针指向文件头。 w 以写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则创建该文件。 w+ 以读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则创建该文件。 a 以写入方式打开,将文件指针指向文件末尾。如果文件不存在则创建该文件。 a+ 以读写方式打开,将文件指针指向文件末尾。如果文件不存在则创建该文件。 x 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则创建该文件。仅适用于本地文件。 x+ 创建并以读写方式打开,其他的行为和 x 一样。 c 只打开文件进行写入,如果文件不存在,则创建该文件。如果文件存在,不会清空文件内容,并将文件指针指向文件头。 c+ 打开文件进行读写,如果文件不存在,则创建该文件。如果文件存在,不会清空文件内容,并将文件指针指向文件头。
<?php
$file = fopen ("1.txt","r");
$file = fopen ("https://www.php.net/","r");//以只读方式打开网站的首页文件
?>
② fclose()
- 关闭文件
资源类型属于 PHP 的基本类型之一,一旦完成资源的处理,一定要将其关闭,否则可能会出现一些意料不到的错误。
函数 fclose() 可以关闭一个已打开的文件指针,成功时返回 TRUE,失败则返回 FALSE。函数的语法格式如下:
fclose(resource $handle)
其中 $handle 为要关闭的文件指针,这个指针必须是有效,并且是通过 fopen() 或 fsockopen() 函数成功打开的。
<?php
$handle = fopen("https://www.php.net/", "r");
echo '文件指针关闭之前:';
var_dump($handle);
fclose($handle);
echo '<br>文件指针关闭之后:';
var_dump($handle);
?>
4、文件的读取
函数名 | 描述 |
---|---|
readfile() | 读入一个文件并写入到输出缓冲,出错则返回 FALSE |
file() | 将整个文件读入一个数组中,出错则返回 FALSE |
file_get_contents() | 将整个文件读入一个字符串,出错则返回 FALSE |
fgets() | 从文件指针中读取一行,出错则返回 FALSE |
fgetss() | 从文件指针中读取一行并过滤掉 HTML 和 PHP 标记,出错则返回 FALSE |
fgetc() | 从文件指针中读取一个字符,出错则返回 FALSE |
fread() | 从文件读取指定字节数的数据,出错则返回 FALSE |
① fread()
- 读取文件(任意长度)
该函数的语法格式如下:
fread(resource $handle, int $length)
其中 $handle 为通过 fopen() 函数创建的文件资源;$length 为最多读取 $length 个字节。
fread() 函数可以从文件中读取指定长度的数据,当读取了 $length 个字节或者读取到了文件末尾(EOF)时函数会停止读取,并返回所读取到的字符串。如果读取失败则返回 FALSE。
<?php
$filename = "./test.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, '16');
echo '从文件中读取 16 个字符长度:'.$contents.'<br>';
rewind($handle);
$contents = fread($handle, filesize($filename));
echo '读取全部的文件内容:'.$contents;
fclose($handle);
?>
② fgets()
- 用于一次读取一行数据
函数的语法格式如下:
fgets(resource $handle[, int $length])
其中参数 $handle 是被打开的文件;参数 $length 为可选参数,用来设置读取的数据长度。函数能够实现从指定文件 $handle 中读取一行并返回长度最大值为 $length-1 个字节的字符串。在遇到换行符、EOF 或者读取了 $length-1 个字节后停止。如果忽略 $length 参数,则默认读取 1k(1024字节)长度。
<?php
$handle = @fopen("./test.txt", "r");
if ($handle) {
while (($info = fgets($handle, 1024)) !== false) {
echo $info.'<br>';
}
fclose($handle);
}
?>
③ fgetc()
- 从文件中读取一个字符
在对某一个字符进行查找、替换时,就需要有针对性地对某个字符进行读取,在 PHP 中可以使用 fgetc() 函数实现此功能。该函数语法格式如下:
fgetc(resource $handle)
其中参数 $handle 为使用 fopen() 或 fsockopen() 成功打开的文件资源。
- 注意:
- fgetc() 函数可能返回布尔值 FALSE,也可能返回等同于 FALSE 的非布尔值。所以应该使用===运算符来测试此函数的返回值。
- fgetc() 函数可安全用于二进制对象,但不适用于读取中文字符串,因为一个中文通常占用 2~3 个字符。
<?php
header("Content-Type: text/html;charset=utf-8"); //设置字符编码
$handle = fopen('./test.txt', 'r'); //打开文件
if (!$handle) { //判断文件是否打开成功
echo '文件打开失败!';
}
while (false !== ($char = fgetc($handle))) { //循环读取文件内容
echo $char;
}
fclose($handle); //关闭文件
?>
④ file_get_contents()
- 将文件读入一个字符串
函数的语法格式如下:
file_get_contents(string $filename)
- 参数说明如下:
- $filename:要读取的文件的名称;
<?php
$file = 'test.txt';
$filestr = file_get_contents($file);
if($filestr){
echo $filestr;
}else{
echo '读取失败!';
}
?>
⑤ file()
- 把整个文件读入一个数组中
file() 函数会将文件的内容按行存放到数组中(包括换行符在内)。如果成功则返回这个数组,失败则返回 FALSE。file() 函数的语法格式如下:
file(string $filename[, int $flags = 0])
- 参数说明如下:
- $filename:要读取的文件名称或路径;
- $flags:可选参数,flags 可以是以下一个或多个常量:
- FILE_USE_INCLUDE_PATH:在 include_path 中查找文件;
- FILE_IGNORE_NEW_LINES:在数组每个元素的末尾不要添加换行符;
- FILE_SKIP_EMPTY_LINES:跳过空行。
<?php
$file = 'test.txt';
$arr = file($file, FILE_IGNORE_NEW_LINES);
$arr2 = file($file);
echo '<pre>';
var_dump($arr);
var_dump($arr2);
?>
⑥ readfile()
- 读取全部文件并输出到缓冲
readfile() 函数用于读取一个文件并将其写入到输出缓冲,同时返回从文件中读入的字节数。如果出错则返回 FALSE,该函数的语法格式如下:
readfile(string $filename[, bool $use_include_path = false])
- 参数说明如下:
- $filename:要读取的文件名或文件路径;
- $use_include_path:可选参数,用来设定是否想要在 include_path 中搜索该文件,默认为 FALSE;
<?php
$file = 'test.txt';
$info = readfile($file);
//常用于浏览器下载
$file_Size = filesize($file);
$downname = $file;
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:".$file_Size);
header("Content-Disposition: attachment; filename=".$downname);
readfile($file);
?>
5、文件的写入和追加
文件在写入前需要打开文件,如果文件不存在则先要创建它。在PHP中没有专门用于创建文件的函数,一般可以使用fopen()函数来创建,文件模式可以是“w”、“w+”、“a”、“a+”。
① fwrite()
- 将字符串写入到文件中
fwrite(resource $handle, string $string[, int $length])
- 参数说明如下:
- $handle:待写入的文件,是由 fopen() 创建的 resource(资源);
- $string:要写入的字符串;
- $length:可选参数,用来设定要写入的字节数。
- fwrite() 函数可以把 $string 的内容写入文件指针 $handle 处。 如果指定了 $length,当写入了 $length 个字节或者写完了 $string 以后,写入就会停止。函数执行成功,会返回写入的字节数,执行失败,则返回 FALSE。
- 如果以写入方式“w”打开文件,写入的数据将覆盖旧数据,如果不想覆盖之前的数据而将新数据添加到文件末尾,可以使用追加模式“a”来打开文件。
<?php
$fp = fopen('test.txt', 'w');
fwrite($fp,'这是写入的一行话\n');
fwrite($fp,'最多写入12个字符\n',12);
fclose($fp);
echo "<pre>";
print_r(file('test.txt'));
?>
写入后文件指针指向了文件末尾,要读取文件内容的话,需要先将指针移回文件开头。
<?php
$fp=fopen("new.txt","w+");
fwrite($fp,'这是写入的一行话\n\r');
rewind($fp); //将指针指向文件开头
$str=fread($fp,20); //读取文中前20个字符保存到$srt中
echo $str;
fclose($fp);
?>
② file_put_contents
- 将字符串写入到文件中
语法格式如下:
file_put_contents(string $filename, mixed $data[, int $flags = 0])
- 参数说明如下:
- $filename:要被写入数据的文件名;
- $data:要写入的数据,可以是字符串、一维数组或者资源等类型;
- $flags:可选参数,它的值可以是以下几种(可以使用|运算符组合使用):
- FILE_USE_INCLUDE_PATH:在 include 目录里搜索 $filename。
- FILE_APPEND:如果文件 $filename 已经存在,追加数据而不是覆盖。
- LOCK_EX:在写入时获得一个独占锁。
<?php
$file = 'test.txt';
echo "<pre>写入前:";
echo file_get_contents($file).'<br>';
$arr = [
'php官网',
'https://www.php.net/'
];
file_put_contents($file, $arr, FILE_APPEND|LOCK_EX);
echo '写入后:'.file_get_contents($file);
?>
四、文件的上传与下载
1、相关设置
① php.ini
文件设置
参数 | 描述 |
---|---|
file_uploads | 值为on,表明服务器支持文件上传,否则不支持 |
upload_tmp_dir | 上传文件的临时目录。默认情况下是注释,删除行开头的分号即可启动,文件在成功上传之前首先被保存在该目录下 |
upload_max_filesize | 服务器允许上传文件的最大值 |
#配置php.ini文件 (以上传500M以下大小的文件为例)
#查找以下选项并修改
file_uploads = On ;打开文件上传选项
upload_max_filesize = 500M ;上传文件上限
post_max_size = 500M ;POST方法可以接受的信息最大量,该参数的值要大于等于upload_max_filesize
max_execution_time = 1800 ; 脚本最大执行时间,默认30秒
max_input_time = 1800 ; 页面接收数据所需的最大时间,默认60秒
memory_limit = 128M ; 脚本可以分配的最大内存量 (128MB)内存上限
② $_FILES
全局变量
全局变量$_FILES存储的是上传文件的相关信息,该变量是一个二维数组,其存储的信息如下所示:
元素名 | 描述 |
---|---|
$_FILES[filename][’name'] | 上传文件的名称 |
$_FILES[filename][‘size’] | 上传文件的大小,单位为字节 |
$_FILES[filename][’temp_name'] | 上传文件存储的临时目录 |
$_FILES[filename][’type'] | 上传文件的类型 |
$_FILES[filename][’error'] | 上传文件的结果,0是上传成功 |
2、文件上传
PHP主要使用move_uploaded_file()函数以及全局变量$_FILE来实现文件上传。
move_uploaded_file(string $filename, string $destination)
- 参数说明:
- $filename 为上传文件的文件名;
- $destination 为文件要移动到的位置。
① 上传单个文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP文件上传</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="upfile">
<input type="submit" value="上传">
</form>
</body>
</html>
<?php
if(!empty($_FILES)){
$tmpname = $_FILES['upfile']['tmp_name']; // 临时文件名称
$name = $_FILES['upfile']['name']; // 文件的原名称
$path = './uploads'; // 上传目录
$file_name = date('YmdHis').rand(100,999).$name;// 避免文件重名,更改文件名称
if(move_uploaded_file($tmpname, $path.'/'.$file_name)){
echo $name." 上传成功!";
}else{
echo $name." 上传失败!";
}
}
?>
② 上传多个文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP文件上传</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="upfile[]"><br>
<input type="file" name="upfile[]"><br>
<input type="file" name="upfile[]"><br>
<input type="submit" value="上传">
</form>
</body>
</html>
<?php
if(!empty($_FILES)){
$tmpname = $_FILES['upfile']['tmp_name'];
$name = $_FILES['upfile']['name'];
$path = './uploads';
for ($i=0; $i < count($tmpname); $i++) {
$file_name = date('YmdHis').rand(100,999).$name[$i];
if(move_uploaded_file($tmpname[$i], $path.'/'.$file_name)){
echo $name[$i].' 上传成功!<br>';
}else{
echo $name[$i].' 上传失败!<br>';
}
}
}
?>
3、文件下载
① 通过url地址下载
在网页中可以通过链接下载的格式,如:
<a href=”源文件路径”>点击下载</a>
但这种方式安全性不高,很容易暴露了文件所在的路径,可能会有安全隐患。但要实现安全的文件下载,在PHP中可以使用header()和readfile()两个函数来完成。
② 数据流下载
header()函数的作用是向浏览器发送正确的HTTP报头,报头指定了网页内容的类型、页面的属性等信息。header()函数的功能有页面跳转、指定网页内容、文件下载等,下面只介绍文件下载功能。 header()文件下载功能,需要结合readfile()函数可以下载将要浏览的文件,示例如下:
<?php
$file = 'test.txt';
$file_Size = filesize($file);
$downname = $file;
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:".$file_Size);
header("Content-Disposition: attachment; filename=".$downname);
readfile($file);
?>
五、综合案例
1、利用PHP文件上传的功能实现提交“PHP程序设计作业”的页面
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>提交PHP作业</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data" action="uploadfile.php">
<p align="center"><b>欢迎使用PHP程序设计作业上交系统</b></p>
PHP程序设计作业文件(*.php):
<input type="file" name="up_file"><br/>
<input type="submit" value="上交" name="B1">
<input type="reset" value="取消" name="B2">
</form>
</body>
</html>
<?php
header("Content-Type:text/html;charset=gb2312");
//判断是否有上传文件
if(!empty($_FILES["up_file"]["name"]))
{
//获取上传文件的临时文件名
$file_name=$_FILES["up_file"]["tmp_name"];
//上传的目录及新文件名
$destination="./php_file/".$_FILES["up_file"]["name"];
if($_FILES["up_file"]["size"]>1000000)
echo "文件太大";
else
{
//上传文件
move_uploaded_file($file_name, $destination);
//读取文件并显示在文本区内
echo "<textarea rows=10 name=S1 cols=80 style='font-size: 12pt';>",
file_get_contents($destination);
echo "</textarea>";
}
}
?>