博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
上传文件
阅读量:6236 次
发布时间:2019-06-22

本文共 2797 字,大约阅读时间需要 9 分钟。

文件上传需要考虑的细节:

(1), 如何控制用户上传的文件大小 < 2m

(2), 如何控制用户上传的文件类型(问题!)
(3), 如何防止用户图片覆盖问题
(4), 如何防止同一个用户上传的文件名相同问题

upload.php 这是一个上传文件的界面.

如果要上传文件,我们需要把

<form action=” ” enctype=” multipart/form-data” method=”post”>

上传文件<input type=”file” name=”myfile”/>

<input type=”sumbit” value=”上传”/>

</form>

    
Document
文件上传
请填写用户名:
请简单介绍该文件
请选择你要上传文件:
uploadprocess.php
"; print_r($_FILES); echo $_SERVER['DOCUMENT_ROOT']."
";//获取文件服务器的根目录。 echo dirname(__FILE__)."
";//获取当前文件的目录; echo __FILE__."
";//获取当前文件的目录和文件名。 echo basename(__FILE__);//获取当前文件的目录和文件名。 echo ""; //获取文件的大小 $file_size=$_FILES['myfile']['size']; if($file_size>2*1024*1024){ echo "文件过大,不能上传大于2m文件"; exit(); } //获取文件的类型 $file_type=$_FILES['myfile']['type']; if($file_type!='image/jpg' && $file_type!='image/jpeg'){ echo "文件类型只能是图片 jpg的"; exit(); } //判断是否上传ok if(is_uploaded_file($_FILES['myfile']['tmp_name'])){ //把文件转存到你希望的目录 $uploaded_file=$_FILES['myfile']['tmp_name']; //我们给每个用户动态的创建一个文件夹 $user_path=dirname(__FILE__)."/file/up/".$username; $user_path=iconv("utf-8","gb2312",$user_path); //判断该用户是否已经有文件夹 if(!file_exists($user_path)){ mkdir($user_path); } //$move_to_file=$user_path."/".$_FILES['myfile']['name']; $file_true_name=$_FILES['myfile']['name']; $move_to_file=$user_path."/".time().rand(1,1000).substr($file_true_name,strrpos($file_true_name,".")); if(move_uploaded_file($uploaded_file,iconv("utf-8","gb2312",$move_to_file))){ echo $_FILES['myfile']['name']."上传ok"; }else{ echo "文件上传失败"; } }else{ echo "上传失败"; } ?>

1.  is_uploaded_file(file)函数判断指定的文件是否是通过 HTTP POST 上传的  

  如果 file 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。

  该函数可以用于确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。

  这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

2.  $_FILES

今天我们着重讲$_FILES函数

当客户端提交后,我们获得了一个$_FILES 数组
$_FILES数组内容如下:
$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。

 

3.  move_uploaded_file(file,newloc)  将上传的文件移动到新位置

        若成功,则返回 true,否则返回 false。

 

参数 描述
file 必需。规定要移动的文件。
newloc 必需。规定文件的新位置。

 

转载于:https://www.cnblogs.com/xs-yqz/p/5139386.html

你可能感兴趣的文章
利用Axis2默认口令安全漏洞可入侵WebService网站
查看>>
java-----基本数据类型包装类
查看>>
MD5 SHA-1 示例
查看>>
【WPF】退出应用时的提示弹窗
查看>>
Node.js - 断言
查看>>
缓存穿透,缓存雪崩,热点key及解决办法
查看>>
Nginx配置直接php
查看>>
android样式开发
查看>>
radio选择事件 onchange事件 onclick事件
查看>>
很清晰的解读i2c协议【转】
查看>>
荆慕瑶
查看>>
密码需要带特殊字符(二)
查看>>
10 advanced LotusScript tips
查看>>
InstallShield 2012 Spring新功能试用(21): 安装过程中可以在目标系统中创建和配置任务计划...
查看>>
管道拥塞
查看>>
详解linux vi命令用法
查看>>
基于jQuery的下拉菜单插件,诸位上眼!!!
查看>>
JDBC for rdf3x
查看>>
C# 图像编程 (1) 准备工作; 你好,空姐; 为空姐照片添加特效
查看>>
Openvswitch手册(3): sFlow, netFlow
查看>>