php简单文件上传$_FILES与move_uploaded_file实现文件上传

php教程简单文件上传$_files与move_uploaded_file实现文件上传

$_files["file"]["name"] - 被上传文件的名称
$_files["file"]["type"] - 被上传文件的类型
$_files["file"]["size"] - 被上传文件的大小,以字节计
$_files["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_files["file"]["error"] - 由文件上传导致的错误代码
这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

注释:对于 ie,识别 jpg 文件的类型必须是 pjpeg,对于 firefox,必须是 jpeg。

 

/*  
*$formname                       html上传表单名称  
*$allowtype_array                允许上传的文件类型数组  
*$allow_size                     允许上传的文件最大大小,默认是1mb  
*$isrename                       是否需要重命名被上传的文件  
*/  
function upload_file($formname,$path,$allowtype_array,$allow_size='1048576',$isrename=true){  
 if($_files[$formname]['tmp_name']=='' || $_files[$formname]['name']=='' || $_files[$formname]['size']==0){  
  return false;  
 }  
 if(!file_exists('../uploadfiles/'.$path)){  
  if(!mkdir('../uploadfiles/'.$path,0777)){  
   writeerrmsg('创建上传文件保存文件目录失败,请联系管理员检查目录权限');  
  }  
 }  
 if($_files[$formname]['size']>$allow_size){  
  writeerrmsg('上传文件过大,请将上传文件限制在'.number_format($allow_size/1048576,'2','.','').'mb以内');  
 }  
 $file_name_array=explode('.',$_files[$formname]['name']);  
 $file_type=strtolower($file_name_array[count($file_name_array)-1]);  
 if(!in_array($file_type,$allowtype_array)){  
  writeerrmsg('上传文件类型错误,仅允许上传后缀名为 .'.implode(' .',$allowtype_array).'的文件');  
 }  
 $save_name=$isrename?randomname().'.'.$file_type:$_files[$formname]['name'];  
 if(!move_uploaded_file($_files[$formname]['tmp_name'],'../uploadfiles/'.$path.'/'.$save_name)){  
  writeerrmsg('文件上传过程中发生错误,请重新上传');  
 }  
 switch($_files[$formname]['error']){  
  case 0:  
   return $save_name;  
  break;  
  case 1:  
   writeerrmsg('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值');  
  break;  
  case 2:  
   writeerrmsg('上传文件的大小超过了 html 表单中 max_file_size 选项指定的值');  
  break;  
  case 3:  
   writeerrmsg('文件只有部分被上传');  
  break;  
  case 4:  
   writeerrmsg('没有文件被上传');  
  break;  
  default:  
   writeerrmsg('能出现这条错误提示,日子也该混到头了');  
  break;  
 }  
}

move_uploaded_file
本函数检查并确保由 file 指定的文件是合法的上传文件(即通过 php 的 http post 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。

如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。

如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。

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

时间: 2024-08-01 16:48:18

php简单文件上传$_FILES与move_uploaded_file实现文件上传的相关文章

php-PHP上传文件的问题$_FILES['file']['error']

问题描述 PHP上传文件的问题$_FILES['file']['error'] 这段时间一直在啃<Head First PHP & MySQL>,这本书非常好,一步步教授怎么开发一个 PHP网站,一直照着一步步地敲代码,现在看到487页,在测试上传文件功能时,发现前面 的editprofile.php里面的 if ($_FILES['file']['error'] == 0) { 老是报错: // Validate and move the uploaded picture file,

在Linux上使用logwatch分析监控日志文件

1. 介绍 在维护Linux服务器时,经常需要查看系统中各种服务的日志,以检查服务器的运行状态. 如登陆历史.邮件.软件安装等日志.系统管理员一个个去检查会十分不方便:且大多时候,这会是一种被动的检查,即只有在发现系统运行异常时才会想到去查看日志以获取异常的信息.那么如何主动.集中的分析这些日志,并产生报告,定时发送给管理员就会显得十分重要. logwatch 是一款用 Perl 语言编写的开源日志解析分析器.它能对原始的日志文件进行解析并转换成结构化格式的文档,也能根据您的使用情况和需求来定制

tomcat打不开jsp文件,求助大家,看着百度上改了一些东西并没有用

问题描述 tomcat打不开jsp文件,求助大家,看着百度上改了一些东西并没有用 我把jsp的文件夹拷贝到webapps文件夹的ROOT里,tomcat是能正常什么启动的,并且也能打开http://localhost:8080/,加上自己的文件夹名和jsp文件名.jsp就报404错误 解决方案 原因如下: 你的tomcat不是通过eclipse(或 myeclipse)启动的,而是自己手动启动的.这种状况一般是,能在本地浏览器上可以访问:http://localhost:8080成功,在ecli

android-一段很简单的代码 Eclipse没有报错 可是手机上一点按钮就意外停止

问题描述 一段很简单的代码 Eclipse没有报错 可是手机上一点按钮就意外停止 (http://img.ask.csdn.net/upload/201505/31/1433054546_331226.png) 和书上对比了好多次了-.- 第一个 ```package com.example.ex04_01; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import a

C#Winform程序上传文件到数据库再下载打开时文件损坏

问题描述 C#Winform程序上传文件到数据库并加密,再下载到本地打开时文件损坏打不开了.上传officeword2003文件没有问题,2007文件会提示[无法打开OfficeOpenXML文件xxx.docx,因为内容有错误.],详细信息是[文件已损坏,无法打开.].实际上office还是能够修复打开的,不过要多点2下鼠标.如果上传压缩文件就打不开了.另外,网上说字段类型应该用IMAGE,我试过了,也不行.我用的是ntext.跟加密也没关系.哪位给解决下//把文件写入数据库FileStrea

Linux上使用logwatch分析监控日志文件

1. 介绍 在维护Linux服务器时,经常需要查看系统中各种服务的日志,以检查服务器的运行状态. 如登陆历史.邮件.软件安装等日志.系统管理员一个个去检查会十分不方便:且大多时候,这会是一种被动的检查,即只有在发现系统运行异常时才会想到去查看日志以获取异常的信息.那么如何主动.集中的分析这些日志,并产生报告,定时发送给管理员就会显得十分重要. logwatch 是一款用 Perl 语言编写的开源日志解析分析器.它能对原始的日志文件进行解析并转换成结构化格式的文档,也能根据您的使用情况和需求来定制

如何从Internet上有效而稳定地下载文件

本文配套源码 如何从Internet上有效而稳定地下载文件,这是很多网络应用程序要考虑的重要问题,本文提供的代码段针对这个问题进行了初步的探索.希望能够抛砖引玉,对各位编程人员有所帮助. UINT InternetGetFile (HINTERNET IN hOpen, CHAR *szUrl, CHAR *szFileName, HWND hwndProgress, int idStatusText, int idProgressBar); 这里返回值的类型为UINT,如果成功返回0,否则返回

Mac上zip文件解压出cpgz格式的文件该怎么办?

  Mac上zip文件解压出cpgz格式的文件该怎么办? 问题原因: 首先,我们分析导致这种情况的原因有以下几点: 1.zip文件已经损坏; 2.zip文件下载时没有下载完全; 3.浏览器在下载或者下载完成zip文件时,对其进行了错误处理; 4.bug导致. 校验文件: 解决这个zip-cpgz循环有多种方法,首先你可以验证一下你的zip文件md5 hash或者SHA1(这些数据一般可以在你下载的网页上边扎到),如果校验显示不同,说明你的文件有损坏或者下载不完全. 1.校验MD5 hash方法:

如何在Mac上用AirDrop共享文件和发送文件到IOS设备上

  在Mac中AirDrop功能便于您以无线方式将Mac 中的文件发送到周边使用IOS设备的人共享照片.视频.位置等信息 .那么苹果设备之间如何通过AirDrop共享文件和发送文件呢? 而且你无需为了传输文件而连接到同一网络,您的设备会针对 AirDrop 自动设置直接的无线连接 .AirDrop 可从 Finder."共享"菜单找到,也可在"打开"和"存储"窗口中找到.当您在 Yosemite 中选取 AirDrop 时,您的 Mac 会寻找附