php 文件上传(普通上传与异步上传)的例子

发布时间:2019-09-05编辑:脚本学堂
本节介绍下php中普通文件上传与异步文件上传的例子,有需要的朋友,不妨作个参考。

一、普通文件上传
1,前端代码
 

复制代码 代码示例:
<form action="upload_file.php" method="post" enctype="multipart/form-data">   
<label for="file">Filename:</label>   
<input type="file" name="file" id="file" />    
<br /><input type="submit" name="submit" value="Submit" />   
</form>

2,upload_file.php
 

复制代码 代码示例:
<?php
//php普通文件上传
//by www.jb200.com
if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/pjpeg"))&& ($_FILES["file"]["size"] < 20000)){   
  if ($_FILES["file"]["error"] > 0) {   
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";   
  }else {
      echo "Upload: " . $_FILES["file"]["name"] . "<br />";   
      echo "Type: " . $_FILES["file"]["type"] . "<br />";   
      echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";   
      echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";   
   
      if (file_exists("upload/" . $_FILES["file"]["name"])){   
         echo $_FILES["file"]["name"] . " already exists. ";   
      }else{
         move_uploaded_file($_FILES["file"]["tmp_name"],   
         "upload/" . $_FILES["file"]["name"]);
         echo "Stored in: " . "upload/" . $_FILES["file"]["name"];   
      }   
  }   
   
}else {   
  echo "Invalid file";   
}
?>

二、异步文件上传
使用iframe异步上传文件。
1,前端html
 

复制代码 代码示例:
<form id="upForm" action="upload.php" method="post" enctype="multipart/form-data" target="upload_target" >   
导入文件:<input type="file" name="myfile" id="myfile" />   
<input type="submit" name="submitBtn" value="导入" />   
<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>   
</form>    
<span id="info"></span> 

2,Js代码
 

复制代码 代码示例:
function startUpload() {   
    var spanObj = document.getElementById("info");   
    spanObj.innerHTML = " 开始上传";   
    document.getElementById("upForm").sumbit();   
}   
//回调   
function stopUpload(responseText){   
    var spanObj = document.getElementById("info");   
    spanObj.innerHTML = "上传成功";   
    spanObj.innerHTML = responseText;   
}   
 

2)、服务器端代码
 

复制代码 代码示例:

<?php
$file = $_FILES['myfile'];   
$fileName = uploadFile($file);   
//$result = readFromFile("../upload/" . $fileName);   
echo "<script type='text/javascript'>window.top.window.stopUpload('{$fileName}')</script>";   
   
function uploadFile($file) {   
    // 上传路径        
    $destinationPath = "../upload/";   
    if (!file_exists($destinationPath)){   
        mkdir($destinationPath , 0777);   
    }   
    //重命名   
    $fileName = date('YmdHis') . '_' . iconv('utf-8' , 'gb2312' , basename($file['name']));   
    if (move_uploaded_file($file['tmp_name'], $destinationPath . $fileName)) {   
        return iconv('gb2312' , 'utf-8' , $fileName);   
    }   
    return '';   
}

//代码注释   
/* 
1,关于basename方法 
$path = "/testweb/home.php"; 
//显示带有文件扩展名的文件名 
echo basename($path); 
//显示不带有文件扩展名的文件名 
echo basename($path,".php"); 
 
2,关于iconv 
iconv('gb2312' , 'utf-8' , $fileName);//将$fileName从gb2312转为utf-8格式。 
注:该函数需要开启php.ini里面的php_iconv.dll 
 
3,关于$_FILES['myfile'] 
$_FILES相当于一个二维数组,而$_FILES['myfile']相当于一个一维数组。所以可以 
$f = $_FILES['myfile']; 
echo $f['name']; 
 
如果直接访问该$_FILES['myfile'],则会报Undefined index: myfile。此时加上 
if(!isset($_FILES['myfile'])){ 
    die('上传文件不存在!'); 

*/