在PHP中上传文件是非常简单的,不像JAVA中的那样各种接口与对象,一个函数搞定一切。
文件上传表单
<?php
/* 文件上传 */
header("Content-Type: text/html; charset=utf-8");
?>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h2>单个文件上传</h2>
<form method="post" action="file/upload.php" enctype="multipart/form-data">
<!--enctype="multipart/form-data" 这个属性必须添加才能识别是上传的文件否则就无法成功上传-->
<p>选择文件:<input name="file" value="" type="file" /></p>
<p>自定义保存文件名:<input type="checkbox" name="rename" value="ok" /></p>
<p>文件名:<input name="name" value="" type="text" /></p>
<input type="hidden" value="yes" name="one">
<p><button type="submit">文件上传</button></p>
</form>
<hr /><!--华丽的分割线-->
<h2>多文件上传</h2>
<form method="post" action="file/upload.php" enctype="multipart/form-data">
<p>选择文件1:<input name="file[]" value="" type="file" /></p>
<p>选择文件2:<input name="file[]" value="" type="file" /></p>
<p>选择文件3:<input name="file[]" value="" type="file" /></p>
<p>选择文件4:<input name="file[]" value="" type="file" /></p>
<input type="hidden" value="no" name="one">
<p><button type="submit">文件上传</button></p>
</form>
</body>
</html>
/* 文件上传 */
header("Content-Type: text/html; charset=utf-8");
?>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h2>单个文件上传</h2>
<form method="post" action="file/upload.php" enctype="multipart/form-data">
<!--enctype="multipart/form-data" 这个属性必须添加才能识别是上传的文件否则就无法成功上传-->
<p>选择文件:<input name="file" value="" type="file" /></p>
<p>自定义保存文件名:<input type="checkbox" name="rename" value="ok" /></p>
<p>文件名:<input name="name" value="" type="text" /></p>
<input type="hidden" value="yes" name="one">
<p><button type="submit">文件上传</button></p>
</form>
<hr /><!--华丽的分割线-->
<h2>多文件上传</h2>
<form method="post" action="file/upload.php" enctype="multipart/form-data">
<p>选择文件1:<input name="file[]" value="" type="file" /></p>
<p>选择文件2:<input name="file[]" value="" type="file" /></p>
<p>选择文件3:<input name="file[]" value="" type="file" /></p>
<p>选择文件4:<input name="file[]" value="" type="file" /></p>
<input type="hidden" value="no" name="one">
<p><button type="submit">文件上传</button></p>
</form>
</body>
</html>
文件上传处理file:file/upload.php
<?php
/* 文件上传处理请求 */
header("Content-Type: text/plain; charset=utf-8");
echo "打印\$_POST数组:\n";
print_r($_POST);
echo "\n打印\$_FILES数组:\n";
print_r($_FILES);//上传的文件信息会保存在这个数组中
//在继续之前建议先进行提交测试,查看这两个数组的内容
//在测试的时候可以观察单文件上传和多文件上传数组有什么不同,注意观察error的值
echo "\n\n";
$upload_dir = "write";
if(is_dir($upload_dir) == false && is_writable($upload_dir))die("上传文件目录错误");//is_writable表示判断文件夹是否可写
if($_SERVER['REQUEST_METHOD']=="POST"){
if($_POST['one']=="yes"){
echo "开始单文件上传处理\n";
if(isset($_FILES["file"])){
//此时表示我们有上传文件过来
echo "检测到\$_FILES["file"]数组\n";
if($_FILES["file"]['error'] == 0){
//检测文件上传是否存在错误,0表示没有错误,其他数值错误含义查看手册
echo "上传的文件没有错误\n";
if(isset($_POST['rename']) && !empty($_POST['name']) && !file_exists($upload_dir."/".$_POST['name'])){
//先检测是否进行文件重命名,之后进行重命名的文件或目录是否存在
echo "使用自定义文件名移动";
if(move_uploaded_file($_FILES["file"]["tmp_name"],$upload_dir."/".$_POST['name']) === true)
echo "文件移动成功移动到 ".$upload_dir."/".$_POST['name'];
else
echo "自定义文件移动失败";
}else{
if(file_exists($upload_dir."/".$_FILES["file"]['name'])){
echo "上传的目标文件".$_FILES["file"]['name']."在目录".$upload_dir."中已经存在";
}else{
echo "使用默认文件名移动";
if(move_uploaded_file($_FILES["file"]["tmp_name"],$upload_dir."/".$_FILES["file"]['name']) === true)
echo "文件移动成功移动到 ".$upload_dir."/".$_FILES["file"]['name'];
else
echo "默认方法文件移动失败";
}
}
}
}
}else{
//继续之前可以先测试单文件上传
echo "开始多文件上传\n";
if(isset($_FILES["file"])){
$i = 0;
echo "开始进行错误检测\n";
foreach($_FILES["file"]['error'] as $v){
//开始进行错误检测
if($v==0)echo "第".++$i."个文件上传正确\n";
else
echo "第".++$i."个文件上传错误......XXXXXXX\n";
}
for($j = 0; $j < $i; $j++){
move_file($j,$upload_dir);//调用一个多文件上传函数
}
}
}
}else{
die("只有在POST请求下有效");
}
//多文件上传处理函数,使用默认名称移动
function move_file($i,$dir){
if($_FILES["file"]['error'][$i]==0){
echo "\n开始移动第".($i+1)."个文件\n";
$name = $_FILES["file"]['name'][$i];
if(file_exists($dir."/".$name)){
echo "默认目标文件已存在\n";
}else{
if(move_uploaded_file($_FILES["file"]['tmp_name'][$i],$dir."/".$name)){
echo "成功上传文件到:".$dir."/".$name."\n";
}else{
echo "文件".$name."上传失败\n";
}
}
}
}
?>
/* 文件上传处理请求 */
header("Content-Type: text/plain; charset=utf-8");
echo "打印\$_POST数组:\n";
print_r($_POST);
echo "\n打印\$_FILES数组:\n";
print_r($_FILES);//上传的文件信息会保存在这个数组中
//在继续之前建议先进行提交测试,查看这两个数组的内容
//在测试的时候可以观察单文件上传和多文件上传数组有什么不同,注意观察error的值
echo "\n\n";
$upload_dir = "write";
if(is_dir($upload_dir) == false && is_writable($upload_dir))die("上传文件目录错误");//is_writable表示判断文件夹是否可写
if($_SERVER['REQUEST_METHOD']=="POST"){
if($_POST['one']=="yes"){
echo "开始单文件上传处理\n";
if(isset($_FILES["file"])){
//此时表示我们有上传文件过来
echo "检测到\$_FILES["file"]数组\n";
if($_FILES["file"]['error'] == 0){
//检测文件上传是否存在错误,0表示没有错误,其他数值错误含义查看手册
echo "上传的文件没有错误\n";
if(isset($_POST['rename']) && !empty($_POST['name']) && !file_exists($upload_dir."/".$_POST['name'])){
//先检测是否进行文件重命名,之后进行重命名的文件或目录是否存在
echo "使用自定义文件名移动";
if(move_uploaded_file($_FILES["file"]["tmp_name"],$upload_dir."/".$_POST['name']) === true)
echo "文件移动成功移动到 ".$upload_dir."/".$_POST['name'];
else
echo "自定义文件移动失败";
}else{
if(file_exists($upload_dir."/".$_FILES["file"]['name'])){
echo "上传的目标文件".$_FILES["file"]['name']."在目录".$upload_dir."中已经存在";
}else{
echo "使用默认文件名移动";
if(move_uploaded_file($_FILES["file"]["tmp_name"],$upload_dir."/".$_FILES["file"]['name']) === true)
echo "文件移动成功移动到 ".$upload_dir."/".$_FILES["file"]['name'];
else
echo "默认方法文件移动失败";
}
}
}
}
}else{
//继续之前可以先测试单文件上传
echo "开始多文件上传\n";
if(isset($_FILES["file"])){
$i = 0;
echo "开始进行错误检测\n";
foreach($_FILES["file"]['error'] as $v){
//开始进行错误检测
if($v==0)echo "第".++$i."个文件上传正确\n";
else
echo "第".++$i."个文件上传错误......XXXXXXX\n";
}
for($j = 0; $j < $i; $j++){
move_file($j,$upload_dir);//调用一个多文件上传函数
}
}
}
}else{
die("只有在POST请求下有效");
}
//多文件上传处理函数,使用默认名称移动
function move_file($i,$dir){
if($_FILES["file"]['error'][$i]==0){
echo "\n开始移动第".($i+1)."个文件\n";
$name = $_FILES["file"]['name'][$i];
if(file_exists($dir."/".$name)){
echo "默认目标文件已存在\n";
}else{
if(move_uploaded_file($_FILES["file"]['tmp_name'][$i],$dir."/".$name)){
echo "成功上传文件到:".$dir."/".$name."\n";
}else{
echo "文件".$name."上传失败\n";
}
}
}
}
?>
加一个进度条啊
路过来看看,觉得不错
强大,收藏之
Wings Blog 旗下新站点 wx.wusiwei.com (十万个微什么),欢迎观摩吐槽[兔子]
随便看看
强大~ 收藏了
有很强大么?我怎么不觉得啊