PHP中的文件上传
文件上传:
1.单个文件上传
2.多个文件上传
一.PHP配置文件中和上传有关的选项
file_uploads=on
upload_max_filesize= 最大不要超过服务器的内存
upload_tmp_dir= 上传文件的临时路径
二.上传表单需要注意事项
1.如果有文件操作,表单的提交方式必须是POST提交
2.表单上传需要使用type为file的表单
3.enctype="multipart/form-data"只要有文件上传就要改为这个值,其他情况可以使用默认值,用来指定表单编码的数据方式,让服务器知道,我们需要传递一个文件并带有一些常规的表单信息
4.建议添加一个MAX_FILE_SIZE隐藏表单,值得单位也是字节
三.PHP处理上传的数据
如果是文件上传的数据则使用$_FILES处理上传的文件
$_POST接受非上传的数据
//上传文件传递的信息
Array
(
[pic] => Array
(
[name] => 1.jpg
[type] => image/jpeg
[tmp_name] => uploadtemp\phpFFAB.tmp
[error] => 0
[size] => 9992
)
1.使用$_FILES["表单名"]["error"]检查上传是否出错
UPLOAD_ERR_OK
其值为 0,没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE
其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE
其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL
其值为 3,文件只有部分被上传。
UPLOAD_ERR_NO_FILE
其值为 4,没有文件被上传。
UPLOAD_ERR_NO_TMP_DIR
其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
UPLOAD_ERR_CANT_WRITE
其值为 7,文件写入失败。PHP 5.1.0 引进。
2.使用$_FILES["表单名"]["size"]限制大小,单位是字节 1M=1000000
3.使用$_FILES["表单名"]["type"]或是文件的扩展名限制类型
4.将上传后的文件名改名
实例:
view.html
<html>
<head>
<title>File Upload</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
shopname:<input type="text" name="shopname" /><br>
shopprice:<input type="text" name="price" /><br>
shopnum:<input type="text" name="num" /><br>
<input type="hidden" name="MAX_FILE_SIZE" value="20000000" />
shoppic:<input type="file" name="pic"/><br>
<input type="submit" name="sub" value="添加商品" /><br>
</form>
</body>
</html>
upload.php
<?php
/*echo "<pre>";
print_r($_POST);
print_r($_FILES);
echo "</pre>";
Array
(
[pic] => Array
(
[name] => 1.jpg
[type] => image/jpeg
[tmp_name] => D:\uploadtemp\phpFFAB.tmp
[error] => 0
[size] => 9992
)
*/
//使用$_FILES["pic"]["error"]检查上传是否出错
if($_FILES["pic"]["error"]>0){
switch($_FILES["pic"]["error"]){
case 1:
echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br>";
break;
case 2:
echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。<br>";
break;
case 3:
echo "文件只有部分被上传。<br>";
break;
case 4:
echo "没有文件被上传。<br>";
break;
default:
echo "未知错误<br>";
}
}
//使用$_FILES["pic"]["size"]限制大小,单位是字节 1M=1000000
//echo $_FILES["pic"]["size"];
$maxsize=50000; //50k
if($_FILES["pic"]["size"]>$maxsize){
echo "上传的文件太大,不能超过{$maxsize}字节";
exit;
}
//使用$_FILES["pic"]["type"]或是文件的扩展名限制类型
/*list($dl,$xl)=explode("/", $_FILES["pic"]["type"]);
if($dl!="image"){
echo "请上传一个图片";
exit;
}*/
//按.将文件名分割
$arr=explode(".",$_FILES["pic"]["name"]);
//取后缀名
$hz=$arr[count($arr)-1];
//echo $hz;
//设置上传图片允许的类型
$allowtype=array("png","jpg","jpeg");
//判断后缀是否在要求的图片类型中
if(!in_array($hz,$allowtype)){
echo "这是不允许的类型";
exit;
}
//将上传后的文件名改名
//将临时位置的文件移动到指定的目录上
//制作上传文件的随机名
$filepath="./upload/"; //随机名路径
$randname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100,999).".".$hz; //随机文件名
//判断是否是上传文件
if(is_uploaded_file($_FILES["pic"]["tmp_name"])){
//移动上传文件有专用的函数
if(move_uploaded_file($_FILES["pic"]["tmp_name"],$filepath.$randname)){
echo "上传文件成功!";
}else{
echo "上传失败!";
}
}else{
echo "不是一个上传文件";
}
//echo "上传文件成功!<br>";
?>
PHP中的文件上传的更多相关文章
- IIS 7 中设置文件上传大小的方法
在IIS 6.0中设置文件上传大小的方法,就是配置如下节点: <system.web> <httpRuntime maxRequestLength="1918200&quo ...
- 在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件(转)
引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过“我现在可以通过WebBr ...
- PHP中,文件上传实例
PHP中,文件上传一般是通过move_uploaded_file()来实现的. bool move_uploaded_file ( string filename, string destinati ...
- MVC中的文件上传-小结
web开发中,文件的上传是非常基本功能之一. 在asp.net中,通常做法是利用webservice 来接收文件请求,这样做的好处就是全站有了一个统一的文件上传接口,并且根据网站的实际情况,可以将we ...
- ASP.NET中的文件上传大小限制的问题
一.文件大小限制的问题 首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改WEB.Config文 ...
- struts2中的文件上传,文件下载
文件上传: Servlet中的文件上传回顾 前台页面 1.提交方式post 2.表单类型 multipart/form-data 3.input type=file 表单输入项 后台 apache提交 ...
- 转:在Struts 2中实现文件上传
(本文转自:http://www.blogjava.net/max/archive/2007/03/21/105124.html) 前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题 ...
- ASP.NET Core 中的文件上传
ASP.NET Core上传文件 ASP.NET Core使用IFormFile来读取上传的文件内容,然后将数据写入到磁盘或其它存储空间. 添加FileUpload模型,用来接收上传的文件内容. pu ...
- javaWeb中的文件上传下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- javaWeb中,文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
随机推荐
- alpha发布(技术随笔)
昨天是班级里面每个小组要进行alpha演示,大家都很努力的去做自己的项目.我们nice!组没有演示自己的项目,只一点很惭愧,身为组员没有协助组长按时完成项目,这一点自己也感觉很抱歉,虽然每天感觉自己都 ...
- 编码规范<1>
目录: 1 排版 2注释 3标识命名 4可读性 1排版 1-1程序使用UTF-8的编码方式 1-2使用空格作为缩进 , 尽量不要使用tab 1-3相对独立的程序块之间,变量说明之后必须加空格 . 例如 ...
- 你不知道的JavaScript--值得你挑战的JavaScript面试题(45题)
1,以下表达式的运行结果是: ["1","2","3"].map(parseInt) A.["1","2&qu ...
- C++实现对树的创建和前中后序遍历
#include<iostream>#include<stdio.h> using namespace std; class BitNode{ public: char dat ...
- javascript function new this
1. 首先,我们这里把function直接调用时将这个function当做方法来看待,而new function是将function当做类来看待 2. 当把function作为类来使用时,functi ...
- 简单管理用户SESSION小记(个人观点,欢迎斧正)
做了几年码农,记录下一般涉及到用户session管理的方法. 问题说明: a.用户如果点击退出时,可以获取用户动作,这样可以销毁session. b.用户直接关闭浏览器或者直接意外关机情况,无法获取用 ...
- jquery 添加方法 : $.fn.方法名 = function(参数a,b,c){
$.fn.image_checked = function(self,status,img_body,csrf_token){ $(this).live('click', fu ...
- 从BlackHat2013中我们收获了什么
拉斯维加斯-BlackHat全球黑客大会是每年围观革新安全技术的最好机会,还能和那些 在这个行业里聪明至极的家伙交谈并从中得到些关于前沿技术的动向和启示.今年的会议无论参会人数还是议题数量是历届规模最 ...
- bzoj 2326: [HNOI2011]数学作业
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...
- 警卫安排(dp好题)
警卫安排(guard)[题目描述]一个重要的基地被分为 n 个连通的区域.出于某种神秘的原因,这些区域以一个区域为核心,呈一颗树形分布.在每个区域安排警卫所需要的费用是不同的,而每个区域的警卫都可以望 ...