zoukankan      html  css  js  c++  java
  • 如何用php实现简单的文件上传功能?(带图解)

    如图所示:点击浏览出现选择文件的对话框,将所选文件上传到保存文件的文件。

     关键点:文件上传的图解:

    代码:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		<form method="post" action="chuli.php" enctype="multipart/form-data">
    			<input type="file" name="file" />
    			<input type="submit" value="上传"/>
    		</form>
    	</body>
    </html>
    

      chuli.php

    <?php
    //读取上传的文件信息,以数组方式返回
    $arr = $_FILES["file"];
    //var_dump($arr);
    //以下为输出内容:此处作为注释写在这,便于理解
    //array(5) {
    //["name"]=>    文件名称
    //string(5) "7.png"
    //["type"]=>      文件类型
    //string(9) "image/png"
    //["tmp_name"]=>   文件临时储存的地方
    //string(53) "C:UsersAdministratorAppDataLocalTempphpF626.tmp"
    //["error"]=>      报错:上传没错则为0;有错则会提示错误      
    //int(0)
    //["size"]=>       上传文件的大小
    //int(18747)
    //}
    
    //上传的文件被保存的文件名,images 为同一目录下要保存上传文件的文件名
    $filename="./images/".$arr["name"];
    
    //转换格式,将utf-8转为国标
    $filename = iconv("UTF-8","gb2312",$filename);
    
    //将文件从临时文件移到保存的文件(核心代码)
    move_uploaded_file($arr["tmp_name"],$filename);
    ?>
    

      到此处便可以实现文件的上传功能;但是如我们所知,实际上文件上传时会有很多要求;诸如文件类型,文件大小,文件名是否重复等

    所以要对chuili.php进行修改:

    <?php
    
    $arr = $_FILES["file"];
    
    //加限制条件
    
    if(($arr["type"]=="image/jpeg" || $arr["type"]=="image/png") && $arr["size"]<1024000 )
    {
    	//临时文件的路径
    	//$arr["tmp_name"];
    	
    	$filename = "./images/".time().$arr["name"];
    	
    	//保存之前判断该文件是否存在
    	if(file_exists($filename))
    	{
    		echo "该文件已存在";
    	}
    	else
    	{
    
    		$filename = iconv("UTF-8","gb2312",$filename);
    		
    		move_uploaded_file($arr["tmp_name"],$filename);
    	}
    }
    else
    {
    	echo "上传的文件大小或类型不符合";
    }
    

      这样,就基本可以实现文件的上传功能了~~~

    要注意的几点:

    1、加限制条件从下面几方面加:         1、文件类型   2、文件大小  3、保存的文件名不重复

    2、为了防止重复,文件名采取以下措施   1、用户名加时间戳    2、类似网盘,用文件夹分类

  • 相关阅读:
    【HTML】WebStorage
    【vue.js】vue项目使用Iconfont(阿里图标库)
    【CSS】水平居中和垂直居中
    【设计模式】责任链模式
    【设计模式】观察者模式
    【设计模式】策略模式
    【排序算法】(9)堆排序
    【排序算法】(5)基数排序
    【排序算法】(6)选择排序
    简单权限设计表
  • 原文地址:https://www.cnblogs.com/chenguanai/p/6872694.html
Copyright © 2011-2022 走看看