php判断上传文件
#36;kuozhan=array('jpg','gif','doc');
foreach($val['tmp_name']as$key=>$us){
foreach($val['name']as$key=>$ns){
$arr=pathinfo($val['name'][$key]);
if(!in_array($arr['extension'],$kuozhan)){
echo"上传失败,格式错误!";
returnfalse;
}
}
foreach($val['tmp_name']as$key=>$us){
foreach($val['name']as$key=>$ns){
$arr=pathinfo($val['name'][$key]);
上传程序
}}这样就行,如果你对php有兴趣的话,可以向我一样在后盾人平台多看看自己学习学习,时间长了自己就慢慢明白了,希望能帮到你,给个采纳吧谢谢
(*≧m≦*)
2. php怎么判断1个文件是否正确或者上传成功
$fileType = 'png';break;default:echo 'unknown';}echo 'this is a(an) '.$fileType.' file:'.$typeCode;?>网络过来的,应该是判断文件头二楼:安装fileinfo 扩展 使用finfo_file 函数 手册上的例子 复制内容到剪贴板代码:<?php $finfo = finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension
3. php检测上传文件大小的问题
在用PHP进行文件上传的操作中,需要知道怎么控制上传文件大小的设置,而文件可传大小是受到多种因素制约的,现总结如下:
1、php.ini:upload_max_filesize 所上传的文件的最大大小。默认值2M。
2、php.ini:memory_limit 本指令设定了一个脚本所能够申请到的最大内存字节数,默认值8M。如果不需要任何内存上的限制,必须将其设为 -1。如果内存不够,则可能出现错误:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)
3、php.ini:post_max_size 设定POST数据所允许的最大大小。此设定也影响到文件上传。要上传大文件,该值必须大于 upload_max_filesize。
4、php.ini:max_execution_time = 30 ; Maximum execution time of each script, in seconds
5、php.ini:max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
6、如果用到mysql的BLOB进行二进制文件存储,则需要设置my.ini:max_allowed_packet=xxM
7、httpd.conf
在 Apache 里面有一个选项是 LimitRequestBody,这个选项可以限制用户送出的 HTTP 请求内容。这个选项可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 内使用,分别可以用在 virtualhost 或目录属性设定。而 LimitRequestBody 的设定值是介乎 0 (无限制) 至 2147483647 (2GB)。
例如要在目录 D:/AppServ/www 设定上传限制为 100K,可以在 .htaccess 或 httpd.conf 加入以下语句:
LimitRequestBody 1024000000
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
LimitRequestBody 1024000000Options Indexes FollowSymLinks MultiViews ExecCGIAllowOverride AllOrder allow,denyAllow from all
如果透过 .htaccess 设定,储存档案后会立即生效;如透过 httpd.conf 设定,须要重新启动 Apache。
PHP关于文件上传部分,特别提到表单隐藏域:MAX_FILE_SIZE,意思是接收文件的最大尺寸。文档中给出的例子如下:
<form enctype="multipart/form-data" action="_URL_" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
form>
Send this file:
这里设置MAX_FILE_SIZE = 30000,期待一种可能,使得浏览器在传送文件之前能够依此作出预先判断,如果文件尺寸大于30000字节,则不执行实际的POST动作。也就是不往服务器发送文件内容,而是直接在客户端提醒用户“你试图上传的文件超过30000字节”。
这的确是一个非常棒的主张,但在现实中却暂时无法实现。不是因为这个限制可以“被简单地绕过”,而是IE和FireFox这两个主流浏览器都不支持这个特性。PHP的这个建议尚未被采纳。
MAX_FILE_SIZE还有一个用场:后台PHP会判断接收到的文件大小是否大于这个值,如果超出,$_FILES['thisfile']['error']会被设置为UPLOAD_ERR_FORM_SIZE(2),同时放弃保存临时文件,将$_FILES['thisfile']['size']置0。
这个例子,没问题,表现正常,当我试图上传一个40多K的文件时,PHP程序报告“文件超过MAX_FILE_SIZE”。
但是,如果我们将表单中的MAX_FILE_SIZE从30000减少到1000,情形又如何呢?
上传800字节的文件,正常;
上传40K的文件,PHP报告文件过大,也正常;
上传3000个字节的文件,PHP未报告错误,它成功保存了文件!出乎意料!
问题就出在main/rfc1867.c中判断文件是否超长的这部分代码上。php每次从buffer中读取FILLUNIT字节长度的内容后,首先判断“已经读到的内容长度(total_bytes)”是否大于MAX_FILE_SIZE,然后再增加“已经读到的内容长度(total_bytes)”。这样一来,和预计的结果之间至多会有FILLUNIT字节的误差,而FILLUNIT=1024*5=5K。(点击bug了解详细内容)
这就是说,当MAX_FILE_SIZE<5K时,上传一个大于MAX_FILE_SIZE,但是小于5K的文件是没有问题的。
当然,因为这个设置很容易被绕过,所以服务器端编程不应当依赖于MAX_FILE_SIZE。而且,5K到底是个很小的数值,对大多数上传文件的表单来说没有影响。
PHP中post_max_size,upload_max_filesize, MAX_FILE_SIZE的设置,和客户端上传给服务器端的流量大小无关。
Apache服务器从客户端接收长度不超过LimitRequestBody字节数的请求,然后传送给php模块,php模块再决定是否保存成临时文件,设置$_FILES全局变量,移交给script进一步处理。
这个Apache的LimitRequestBody选项缺省值=0,允许Request body的最大字节数是2G(Linux + Apache)
最后还要注意的是:
html本身能够post数据也是有限制的,不能超过2G。
ftp客户端有文件偏移指针的2GB边界限制,未使用特殊编译flag编译的ftp服务器端或者客户端,无论在什么FS中都不支持大于2GB的文件。不知道PHP会不会也有这种情况。
4. php 判断是否有文件上传
使用系统变量:$_FILES[]
$_FILES
经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES
数组(依然有效,但反对使用)。详细信息请参阅 POST 方法上传。
5. php判断上传文件类型,是取原名后辍好,还是用$_FILES['inputname']['type']好
首先判断$_FILES['inputname']['type'],对于能够识别的类型更正文件后缀,然后再判断后缀。
因为$_FILES['inputname']['type']只能识别少数类型,但是它是根据文件内容来识别的,特别是对于许多把BMP图形保存为JPG文件的相机,一下就现原型了,而你的程序可能针对BMP有转换为JPG的处理。
6. thinkphp 如何判断是否有上传文件,如果没有上传文件,那么就不上传,只保存其它信息,着急!谢谢!
在上传之前添加
这是单个的文件上传
<input type="file" name="images" id="images" />
if($_FILES['images']['name']){ //images 是你上传的名称
}
多个的上传判断
<input type="file" name="images[]" id="images" />
if($_FILES['images']['name']){ //images[] 是你上传的名称 判断上传的是否为空
}
如果你还不知道的话可以使用
print_r($_FILES); 这个是显示所有上传的相关信息
希望对你有帮助!
7. PHP判断上传文件是不是webp
读取文件前几个字节 判断文件类型就好了
8. php如何判断上传多个文件的类型及大小等信息
<?php
if (isset($_FILES['upload']['name']))
{
$fcount = count($_FILES['upload']['name']);
for ($i = 0; $i < $fcount; $i++)
{
$fname = $_FILES['upload']['name'][$i];
$path_parts = pathinfo($fname);
if (strtolower($path_parts['extension']) != 'ppt')
{
echo $_FILES['upload']['name'][$i] . ' 不是ppt文件. <br />' ;
}
}
for ($i = 0; $i < $fcount; $i++)
{
$fsize = (int)$_FILES['uplode']['size'][$i];
if ($fsize > 2048576)
{
echo '文件超过指定的大小: ' . $_FILES['upload']['name'][$i] . ":" . $fsize . '<br />';
}
}
for ($i = 0; $i < $fcount; $i++)
{
$ferror = $_FILES['uplode']['error'][$i];
if ($ferror)
{
echo '文件上传错误: ' . $_FILES['upload']['name'][$i] . ":" . $ferror. '<br />';
}
}
} else
{
echo '上传文件不正确.';
}
?>
9. 如何用php判断上传的是否为图片阿
PHP 图片上传,如果不做任何判断的话,随便一个文件如 rar,zip,php,java等文件改个文件名,改个后缀就能以图片形式上传的服务器,往往会造成极大的危害!
工具/原料
PHP
apache / nginx / iis
phpstorm / netbeans / notepad++ / editplus
方法/步骤
第一种方法:如果是只是单纯判断是否是图片格式的话,我使用 getimagesize 方法function checkIsImage($filename){ $alltypes = '.gif|.jpeg|.png|.bmp';//定义检查的图片类型 if(file_exists($filename)){ $result= getimagesize($filename); $ext = image_type_to_extension($result']); return stripos($alltypes,$ext); }else{ return false; }}
第二种方法比较强大一些,能判断多种格式function getReailFileType($filename){ $file = fopen($filename, "rb"); $bin = fread($file, 2); //只读2字节 fclose($file); $strInfo = @unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; switch($typeCode){ case 7790: $fileType = 'exe';break; case 7784: $fileType = 'midi'; break; case 8297: $fileType = 'rar'; break; case 255216: $fileType = 'jpg';break; case 7173: $fileType = 'gif';break; case 6677: $fileType = 'bmp';break; case 13780: $fileType = 'png';break; default: $fileType = 'unknown'; } return $fileType;}
第三种方法:
PHP gd类库函数提供了一个exif_imagetype() 函数, 用来读取图像的第1个字节, 还会对图片的签名做检查。 如果格式不对,会返回false。 其实啊, 这个方法和第一种方法有异曲同工之妙。 但是因为这个是库函数,效率要比第一种方法高得多。
此函数用法很简单,传入路径,然后通过判断是否等于某个常量, 例如 gif格式的IMAGETYPE_GIF
第四种方法:php重绘
效率很低的一种方法,但也是一种思路: 把传输过来的文件,不论什么文件都以resource 类型绘到图片中去, 如果是图片,能还原出来。如果不是图片,那绘画不出来,而且里面的危险代码也没有了。
具体请看:
总结: 我曾经在网上看到过有人说:相信懂得php的人都用过XX函数。 我打开一看,就是一个使用后缀来判断上传类型的函数。 同学在做类似功能的时候一定要揭开表现看到本质,否则经过伪装的图片在上传之后,会对服务器造成极大安全隐患。
10. php中关于判断上传文件格式
那只有把这段代码写两次,第一次判断是否合法(不要else),第二次执行上传(不要if),例如:
$kuozhan=array('jpg','gif','doc');
foreach($val['tmp_name']as$key=>$us){
foreach($val['name']as$key=>$ns){
$arr=pathinfo($val['name'][$key]);
if(!in_array($arr['extension'],$kuozhan)){
echo"上传失败,格式错误!";
returnfalse;
}
}
foreach($val['tmp_name']as$key=>$us){
foreach($val['name']as$key=>$ns){
$arr=pathinfo($val['name'][$key]);
上传程序
}}