View Code

文件上传------图片

文件上传,拿上传图片做个例子

首先要写个form表单,之前是提交数据的,现在要上传文件提交图片,所以要在后面多加一个属性

然后再选择文件,最后上传

来看一下第一个页面的代码部分

运行后看一下效果

在这里不同的浏览器运行后,会出现不一样的样式,但是功能都是一样的用,点击浏览后,会弹出选择文件的窗口

随便选择一个文件

 

 文件名就会显示在页面上,通过点击上传经过处理页面然后提交

接下来再做第二个页面  shangchuan.php

 第二个页面提交的因为不是数据了,所以这里就不能用post了

可以使用files数组来取了

来看一下代码,先输出一下,看它输出的都是些什么

点击上传

出来的是数组

file数组里面能够取到的内容  tem_name  后面是文件的路径,在服务器上暂时存了个临时文件

如果常理来说只需要再做一步,把文件保存了就可以,但是做程序不能那么简单的做,得考虑各种因素,各个方面

1、控制上传文件的类型

2、控制上传文件的大小

3、防止文件名重复

    修改保存的文件名       (1)用户名+时间戳+随机数+文件名    (2)流水号

    使用文件夹存文件防止文件名重复       最常用的是第一种

4、保存文件

 

来看一下shangchuan.php 页面代码部分

<?php
//var_dump($_FILES["file"]);   //索引写它的name值


//判断文件上传是否出错
if($_FILES["file"]["error"])
{
    echo $_FILES["file"]["error"];
}
else
{
    //控制上传文件类型
    if(($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png") && $_FILES["file"]["size"]<1024000)
    {
        //找到文件存放的位置
        $filename = "./file/".date("YmdHis").$_FILES["file"]["name"];  //加 .  拼接
        //转换编码格式
        $filename = iconv("UTF-8","gb2312",$filename);
        //判断文件是否存在
        if(file_exists($filename))
        {
            echo "该文件已存在!";
        }
        else
        {
        //保存文件
        move_uploaded_file($_FILES["file"]["tmp_name"],$filename);                   //移动上传文件    
        }
    }
    else
    {
        echo "文件类型不正确";
    }
}

在运行前,先建个文件夹,在同一目录下

用来储存上传的图片

用第一个页面运行一下,看看能不能运行成功

点击上传

然后再去看一下那个文件夹

 

 上传成功

注明: 如果上传的这些类型是伪造的,怎么确保保存的是上传图片,而不是随便给的一个路径

通过   就可以确保,保存的一定是上传文件

 

 

这句话是从UTF—8,转换为国标,用iconv方法就可以,如果不转换的话,有些文件名会有出现乱码的情况

posted @ 2017-01-12 11:57  风中摇曳的小花朵  阅读(401)  评论(0编辑  收藏  举报