PHP文件上传
<?php
$uploaddir = "upfiles/";//设置文件保存目录 注意包含/
$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型
$patch="Node/";//程序所在路径
//获取文件后缀名函数 strrchr(): 查找指定字符在字符串中的最后一次出现
function fileext($filename)
{
return substr(strrchr($filename, '.'), 1);
}
//生成随机文件名函数
function random($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
/* void mt_srand(int seed);配置乱数种子
*mt_srand((double)microtime() * 1000000);加入时间的因素,以执行时的百万分之一秒当乱数种子
*int mt_rand([int min], [int max]);取得乱数值。使乱数的乱度最大,每次在取乱数之前最好使用 mt_srand() 以配置新的乱数种子。
*/
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++)
{
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
//$_FILES['file']['name']:被上传文件的名称
$a=strtolower(fileext($_FILES['file']['name']));
//判断文件类型
if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))
{
$text=implode(",",$type);
echo"<Script>alert('请上传图片,上传以下类型文件: ".$text."');window.location.href='add.php';</Script>";
}
//生成目标文件的文件名
else{
$filename=explode(".",$_FILES['file']['name']);//explode — 使用一个字符串分割另一个字符串,返回一个字符串数组
do
{
$filename[0]=random(10); //设置随机数长度
$name=implode(".",$filename);//implode()把数组元素组合为一个字符串。implode(separator,array)
$uploadfile=$uploaddir.$name;
}
while(file_exists($uploadfile));
if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile))
{
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
echo"<Script>alert('上传失败!');window.location.href='add.php';</Script>";
}
else
{//输出图片预览
echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
echo "<br><center><a href='add.html'>继续上传</a></center>";
}
}
}
?>
1 文件上传
1.1 创建表单
<?php
$file = fopen("welcome.txt","r") or exit("Unable to open file!");
while(!feof($file)){
echo fgetc($file);
}
fclose($file);
?>
1.2 上传脚本 全局数组$_FILES
<?php
if($_FILES["file"]["error"] > 0){
echo "Error: " . $_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 "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>
$_FILES数组的第一个参数是表单的input name,第二个下标可以是:
name:被上传文件的名称
type:被上传文件的类型
size:被上传文件的大小
tmp_name:存储在服务器的文件的临时副本的名称
error:由文件上传导致的错误代码
1.3 上传限制
限制上传.gif或者.jpeg文件,文件大小必须小于20kb:
if((($_FILES["file"]["type"] == "images/gif"
if($_FILES["file"]["error"] > 0){
echo "Error: " . $_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 "Stored in: " . $_FILES["file"]["tmp_name"];
}else{
echo "Invalid file";
}
}
?>
1.4 保存被上传的文件
将上面例子在临时文件夹创建的被上传文件的临时副本拷贝到另外的位置以免其在脚本结束时消失
if((($_FILES["file"]["type"] == "images/gif"
if($_FILES["file"]["error"] > 0){
echo "Error: " . $_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";
}
?>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?