文件上传:
    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中的文件上传的更多相关文章

  1. IIS 7 中设置文件上传大小的方法

    在IIS 6.0中设置文件上传大小的方法,就是配置如下节点: <system.web> <httpRuntime maxRequestLength="1918200&quo ...

  2. 在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件(转)

    引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过“我现在可以通过WebBr ...

  3. PHP中,文件上传实例

    PHP中,文件上传一般是通过move_uploaded_file()来实现的.  bool move_uploaded_file ( string filename, string destinati ...

  4. MVC中的文件上传-小结

    web开发中,文件的上传是非常基本功能之一. 在asp.net中,通常做法是利用webservice 来接收文件请求,这样做的好处就是全站有了一个统一的文件上传接口,并且根据网站的实际情况,可以将we ...

  5. ASP.NET中的文件上传大小限制的问题

    一.文件大小限制的问题 首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改WEB.Config文 ...

  6. struts2中的文件上传,文件下载

    文件上传: Servlet中的文件上传回顾 前台页面 1.提交方式post 2.表单类型 multipart/form-data 3.input type=file 表单输入项 后台 apache提交 ...

  7. 转:在Struts 2中实现文件上传

    (本文转自:http://www.blogjava.net/max/archive/2007/03/21/105124.html) 前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题 ...

  8. ASP.NET Core 中的文件上传

    ASP.NET Core上传文件 ASP.NET Core使用IFormFile来读取上传的文件内容,然后将数据写入到磁盘或其它存储空间. 添加FileUpload模型,用来接收上传的文件内容. pu ...

  9. javaWeb中的文件上传下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  10. javaWeb中,文件上传和下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

随机推荐

  1. 《Java程序设计》第一周学习总结

    20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大 ...

  2. C#容易忽略點--包含多線程 委託事件等等--此頁面bug,編輯能查看全部內容

    委託事件 http://www.cnblogs.com/sdya/p/5217635.html 反射 1 创建用于反射使用的DLL 新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文 ...

  3. 接入WebSocket

    闲扯 WebSocket 以前没用过,之前写过一篇博客是基于原生socket的(查看)比较复杂,慎入.今天另外一个APP需要接websocket了,然后便找到了facebook的 SocketRock ...

  4. 网页html结构右侧栏固定,左侧自适应大小。

    最近写了一个项目,写页面的结构,html树形结构是有header,container,footer部分,其中container部分是右侧栏是固定宽度,左侧是自适应宽度与屏幕高度. 第一次写的博客文章是 ...

  5. JDE开发端安装问题(JDE初步卸载重装)

    JDE版本:9.1.4 所遇场景:安装JDE客户端.WEBServer后,卸载重新安装.在安装client后提示找不到DV\PY包. 日志installActionsXXX.log中显示 信息: 10 ...

  6. EFCode First 导航属性

    首先谈谈自己对EF的接触的过程吧,最先接触EF只是因为EF支持从数据库把关系扒下来,可以省掉自己写Select.Update.Insert这些SQL语句,而且修改非常方便,后来在使用的过程中发现导航属 ...

  7. 闲聊CSS之关于clearfix--清除浮动[转]

    .clearfix:after { content: " "; display: block; clear: both; height:; } .clearfix { zoom:; ...

  8. ruby开源项目之Octopress:像黑客一样写博客(zhuan)

    ruby开源项目之Octopress:像黑客一样写博客 百度权重查询 词库网 网站监控 服务器监控 SEO监控 Swift编程语言教程 今年一直推荐的一种写作方式.markdown语法快速成文,git ...

  9. JS引用类型之——数组

    前言 数组作为JS中非常常用的引用类型,其功能是非常强大滴,今天小猪就彻底的看了下它.为了防止猪脑子不够用所以记录在案呐 1.数组的创建 var arrayObj = new Array(); //创 ...

  10. 使用AlarmManager定时更换壁纸----之一

    import android.os.Bundle;import android.app.Activity;import android.app.AlarmManager;import android. ...