PHP学习之路之PHP文件上传需要考虑的问题以及解决方法($_FILES,$_SERVER,substr,strrpos,file_exists,move_uploaded_file,is_uploaded_file,mkdir)
2012-06-08 12:48
1386 查看
问题:
①如何控制用户上传的文件类型
②如何控制用户上传的文件大小
③如何防止用户覆盖图片问题
④如何防止同一个用户上传的文件名相冲突问题
解答:
①可以通过PHP全局数组$_FILES['myfile']['type']来判断上传的文件类型
②可以通过PHP全局数组$_FILES['myfile']['size']来判断上传的文件大小
③可以根据用户输入的用户名来动态创建文件夹
③通过time(),rand(),生成的数字来给文件命名就可以解决文件名冲突问题
PHP Codes:
form表单:
结果截图:
上传之前的文件名:1.jpg
上传之前的文件名:13222172242955.jpg[b]
[/b]
相关文章[b]:文件上传相关函数
[/b]
原文地址: http://www.cnblogs.com/hongfei/articles/uploadfiles.html
转载请注明
①如何控制用户上传的文件类型
②如何控制用户上传的文件大小
③如何防止用户覆盖图片问题
④如何防止同一个用户上传的文件名相冲突问题
解答:
①可以通过PHP全局数组$_FILES['myfile']['type']来判断上传的文件类型
②可以通过PHP全局数组$_FILES['myfile']['size']来判断上传的文件大小
③可以根据用户输入的用户名来动态创建文件夹
③通过time(),rand(),生成的数字来给文件命名就可以解决文件名冲突问题
PHP Codes:
<?php echo "<pre>"; print_r($_FILES); echo "<pre>"; $file_size=$_FILES['myfile']['size'];//获取文件的大小 echo "当前文件大小:".$file_size."B=".(int)$file_size/(1024)."KB<br>"; $file_type=$_FILES['myfile']['type']; //如何控制用户上传的文件类型 if($file_type=='image/jpeg' || $file_type=='image/pjpeg' ){//只允许上传jpg格式的图片 //如何控制用户上传的文件大小 if($file_size>2*1024*1024){ echo "文件大小限制在2M以内..."; // echo "<meta content=\"3,http://www.baidu.com\" http-equiv=\"refresh\" />";//页面跳转 exit(); } if (is_uploaded_file($_FILES['myfile']['tmp_name'])){//通过if语句判断文件是否上传成功 $move_from=$_FILES['myfile']['tmp_name']; //如何防止用户覆盖图片问题===>可以根据用户输入的用户名来创建文件夹 $user_path=$_SERVER['DOCUMENT_ROOT']."/upload/".$_POST['name'];//将上传的文件移到你所希望的目录下 if (!file_exists($user_path)) {//如果此文件夹不存在,则创建之,接下来的就应该把图片移到这个文件夹中来 mkdir($user_path); } 23//如何防止同一个用户上传的文件名相冲突问题 $suffix=substr($_FILES['myfile']['name'],strrpos($_FILES['myfile']['name'],'.'));//取得文件文件后缀 $move_to=$user_path."/".time().rand().$suffix;//通过time(),rand(),就可以解决文件名冲突问题 if(move_uploaded_file($move_from,iconv("UTF-8","GBK",$move_to))){ echo "文件上传成功!"; echo "路径为:".$move_to; // echo "<meta content=\"3,http://www.baidu.com\" http-equiv=\"refresh\" />"; } }else{ echo "文件上传失败..."; // echo "<meta content=\"3,http://www.baidu.com\" http-equiv=\"refresh\" />";//页面跳转 die(); } } else{ echo "<script>alert('只支持图片上传,并且只支持jpg格式的图片');</script>"; // echo "<meta content=\"3,http://www.baidu.com\" http-equiv=\"refresh\" />";//页面跳转 die(); } ?>
form表单:
<form action="upload.php" method="POST" enctype="multipart/form-data"> 用户名:<input name="name" type="text"> 文件描述:<textarea name="file_info"></textarea> <input type="file" name="myfile"/> <input type="submit" value="上传"/> </form>
结果截图:
上传之前的文件名:1.jpg
上传之前的文件名:13222172242955.jpg[b]
[/b]
相关文章[b]:文件上传相关函数
[/b]
原文地址: http://www.cnblogs.com/hongfei/articles/uploadfiles.html
转载请注明
相关文章推荐
- php.ini针对文件上传的修改还有move_uploaded_file()函数对中文字符上传失败的解决方法
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程
- PHP多文件上传(二维数组$_FILES('文件域的名称'),move_uploaded_file(‘临时文件名’,‘新的文件名’))
- ***PHP $_FILES函数详解 + PHP文件上传 move_uploaded_file() 参数的正确写法
- PHP开发学习——文件上传(move_uploaded_file)
- 解决php上传文件过程中Warning move_uploaded_file, failed to open stream的一种思路
- PHP开发学习——文件上传(move_uploaded_file)
- 表单包含file上传文件提交,使用ajaxSubmint或者ajaxForm 遇到的问题以及解决方法
- move_uploaded_file上传 中文文件;下载文件,失败的解决方法
- php文件上传 [function.move-uploaded-file]: failed to open stream 错误解决办法
- PHP中上传文件move_uploaded_file的问题
- JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法
- 微信小程序常见问题->上传文件后如何在后台(php)获取文件名解决方法
- PHP上传文件时文件过大$_FILES为空的解决方法
- PHP和Nginx 文件上传大小限制问题解决方法
- 前端js+后端php进行图片压缩上传(解决move_uploaded_file失败并附源码)
- PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法
- file解决IE8中文件上传报typeerror拒绝访问问题的解决方法
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- php 文件上传 move_uploaded_file