1、php.ini中关于文件上传的设置指令

PHP与服务器文件系统的简单交互

2、文件上传过程

(1)上传文件提交表单html代码:

<!--向服务器上传文件的HTML表单(限制为文本文件)--> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Adminstration - upoload new files</title> 
</head> 
<body> 
<h1>Upload new files</h1> 
<form action="upload.php" method="post" enctyple="multipart/form-data" > 
<!--enctyple:规定在发送到服务器之前对表单数据进行编码的方式(在上传控件时必须按照以上方式设置该属性)--> 
<div> 
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 
<!--规定传输文件的最大字节数--> 
<label for="userfile">Upload a file</label> 
<!--在<label>内点击文本,会触发该控件,此时浏览器会自动对焦到标签for属性所指向的表单控件上面--> 
<input type="file" name="userfile" id="userfile"> 
<!--id属性为<label>标签for所指向控件元素的id号--> 
<input type="submit" value="Send File"> 
</div> 
</form> 
</body> 
</html>

(2)php处理上传文件代码

①在php脚本中,需要处理的数据保存在超级变量数组$_FILES中,开启register_globals指令可以直接通过变量名访问这些信息;

②假如表单变量名为“username“则有:

$_FILES['userfile']['tmp_name']:储存文件在Web服务器中的临时保存位置;
$_FILES['userfile']['name']:储存用户系统中文件的名称;
$_FILES['userfile']['size']:储存文件的大小;
$_FILES['userfile']['type']:储存文件的类型;
$_FILES['userfile']['error]:储存任何与文件上传相关的错误代码;

错误类型说明:

UPLOAD_ERR_INI_SIZE:1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE:2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL:3,文件只有部分被上传。
UPLOAD_ERR_NO_FILE:4,没有文件被上传。
UPLOAD_ERR_NO_TMP_DIR:6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
UPLOAD_ERR_CANT_WRITE:7,文件写入失败。PHP 5.1.0 引进。

③php代码

<"File uploaded seuucessfully<br/><br/>"; 
//对传输文件清除html和php标记 
$contents = file_get_contents($upfile); //将文件内容提取为一个字符串; 
$contents = strip_tags($contents); //对该字符串擦除html和tags标记; 
file_put_contents($_FILES['userfile']['name'],$contents); //将该字符串重新写入文件中; 
//在浏览器上显示传输的文本文件内容 
echo "<p>Preview of uploaded file contents:<br/><hr"; 
echo nl2br($contents); 
echo "</br></hr>";

3、使用目录函数

(1)从目录中读取文件名

①使用opendir(),readdir(),closedir()函数;

<"<p>Upload directory is $current_dir</p>"; 
echo "<p>Directory Listing:</p><ul>"; 
while(($file = readdir($dir)) !== false){ //读取目录对象 
if($file != "." && $file != ".."){ //过滤当前目录和上一级目录 
echo "<li>$file</li>"; 
echo "<a href=\"filedetails.php">".$file."</a><br/>"; 
} 
} 
echo "</ul>"; 
closedir($dir); //关闭目录; 
"htmlcode">
<"<p>Handle is $dir->handle</p>"; 
echo "<p>Upload directory is $current_dir</p>"; 
echo "<p>Directory Listing:</p><ul>"; 
while(($file = $dir->read()) !== false){ //通过dir对象读取目录下的文件名 
if($file != "." && $file != ".."){ 
echo "<li>$file</li>"; 
} 
} 
echo "</ul>"; 
$dir->close(); //关闭目录 
"htmlcode">
<"<p>Upload directory is $current_dir</p>"; 
echo "<p>Directory Listing in alphabetical order,ascending:</p><ul>"; 
foreach($files1 as $file1) { 
if($file1 != "." && $file1 != "..") 
echo "<li>$file1</li>"; 
} 
echo "</ul>"; 
"htmlcode">
$oldumask = umask(0); //重置当前权限码
mkdir("/tmp/testing",0777); //创建目录
umask($oldumask); //恢复当前权限码

②rmdir():删除目录;

代码:

rmdir("/temp/testing");
或rmdir("c:\\tmp\\testing');

※要删除的目录必须是空目录;

4、与文件系统的交互

(1)获取文件信息:

while(($file = readdir($dir)) !== false){ 
echo "<a href=\"filedetails.php">".$file."</a><br/>";
}
<"<h1>Details of file</h1>"; 
echo "<h2>File data</h2>"; 
echo 'File last accessed: '.date('j F Y H:i',fileatime($file))."<br>"; //返回最近访问的时间戳 
echo 'File last modifixed: '.date('j F Y H:i',filemtime($file))."<br>"; //返回最近修改的时间戳 
$user = posix_getpwuid(fileowner($file)); //返回用户标识uid 
echo 'File owner: '.$user['name']."<br/>"; 
$group = posix_getgrgid(filegroup($file)); //返回组织标识gid 
echo 'File group: '.$group['name']."<br/>"; 
echo 'File permissions: '.decoct(fileperms($file))."<br/>"; //返回8位的权限码 
echo 'File type'.filetype($file)."<br/>"; //返回文件类型 
echo 'File size'.filesize($file)."<br/>"; //返回文件字节数 
echo "<h2>File Tests</h2>"; 
echo 'is_dir"<br/>"; 
echo 'is_executable"<br/>"; //判断文件是否可执行; 
echo 'is_file"<br/>"; 
echo 'is_link"<br/>"; 
echo 'is_readable"<br/>"; 
echo 'is_writable"<br/>"; 
"$key_name"):

setenv("$key_name=$value");

以上所述是小编给大家介绍的PHP与服务器文件系统的简单交互,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

标签:
php与服务器交互

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com

评论“PHP与服务器文件系统的简单交互”

暂无“PHP与服务器文件系统的简单交互”评论...

P70系列延期,华为新旗舰将在下月发布

3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。

而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?

根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。