zoukankan      html  css  js  c++  java
  • 文件上传及存储

    使用form表单提交例如:
    <form action="chuli.php" method="post" enctype="multipart/form-data">
        <input type="file" name="file" />
        <input type="submit" value="上传" />
    </form>
     
    在处理页面不使用post,使用$_FILES[],返回的是一个数组,具体信息如下:
    var_dump($_FILES["file"]);
    array(size=5)
      'name' =>
    string
    'Lenovo_SF.jpg'(length=13)
      'type' =>
    string
    'image/jpeg'(length=10)
      'tmp_name' =>
    string
    'D:Program FilesMySqlwamp	mpphpCC75.tmp'(length=43)
      'error' =>
    int
    0
      'size' =>
    int
    1032323
    上传文件需要注意的问题:
    1.控制上传文件的类型和大小:因为安全性以及服务器的空间有限
    2.减少文件重名的概率 修改文件名 建文件夹:因为上传同名文件会覆盖以前的文件
    3.关于中文乱码问题:因为编码格式问题,windows编码格式为gb2312
    4.存储文件的问题:因为上传的文件存在临时文件夹中,程序关闭会清空
     
     
    if($_FILES["file"]["type"] == "image/jpeg" && $_FILES["file"]["size"]<=102400){
        //造一个存储路径
        $yuan = $_FILES["file"]["tmp_name"];
        $filename = "./img/".date("YmdHis").$_FILES["file"]["name"];
        //将存储路径的编码格式变为国标
        $filename = iconv("UTF-8","gb2312",$filename);    //任何地方都可以用来转码
        //判断文件是否存在
        if(file_exists($filename))    {
            die("文件已存在");
        }
        //移动文件
        move_uploaded_file($yuan,$filename);
    }
     
    图片预览上传工具
     
    向数据库中存注册信息,在读取出来,其中文件存取和读取的都是路径,需要注意的是存的时候存绝对路径
    实例:上传与下载
    注册页面:
    <h1>上传文件</h1>
    <div>说明:只能上传word文档,上传文件的大小必须小于1M</div>
    <br />
    <form action="scchuli.php" method="post" enctype="multipart/form-data">
        <input type="file" name="file" />
        <input type="submit" value="上传" />
    </form>
     
    处理页面:
    <?php
    session_start();
    $_SESSION["uid"] = "lisi";
     
    include("../../DBDA.php");
    $db = new DBDA();
     
    $filename="";
     
    //加限制条件
    if($_FILES["file"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document" && $_FILES["file"]["size"]<1048576)
    {
        //造存储路径
        $filename = "./uploads/".date("YmdHis").$_FILES["file"]["name"];
        //转编码格式
        $filename = iconv("utf-8","gb2312",$filename);
     
        //文件是否存在
        if(!file_exists($filename))
        {
            //移动文件保存
            move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
        }
    }
     
    //向文件表添加一条数据
    $uid = $_SESSION["uid"];
    $lujing = iconv("gb2312","utf-8",$filename);
    $urls = "/0630/wenjian/".$lujing;
    $times = date("Y-m-d H:i:s");
    $name = $_FILES["file"]["name"];
     
    $sql = "insert into wenjian values('','{$uid}','{$urls}','{$times}','{$name}')";
     
    $db->Query($sql,0);
     
    header("location:guanli.php");
     
    显示页面:
    <?php
    session_start();
    include("../../DBDA.php");
    $db = new DBDA();
     
    $uid = $_SESSION["uid"];
     
    $sql = "select * from wenjian where uid='{$uid}'";
    $attr = $db->Query($sql);
    ?>
     
    <h1>文件管理页面</h1>
    <table width="100%" border="1" cellpadding="0" cellspacing="0">
    <tr>
        <td>上传者</td>
        <td>上传时间</td>
        <td>文件名</td>
        <td>操作</td>
    </tr>
    <?php
        foreach($attr as $v)
        {
            $sname = "select name from users where uid='{$v[1]}'";
            $name = $db->StrQuery($sname);
            echo "<tr>
                        <td>{$name}</td>
                        <td>{$v[3]}</td>
                        <td>{$v[4]}</td>
                        <td><a href='{$v[2]}'>下载</a></td>//浏览器打不开会下载
                    </tr>";
        }
    ?>
    </table>
     
     
  • 相关阅读:
    switch多分枝语句
    自动扫描判断数组奇偶 直接在控制台输入
    if else语句
    1231作业
    字符集和字符编码
    12.28作业
    置顶广告
    图片库
    js实现隔行换色及其鼠标滑过变色
    【转载】display:inline-block兼容ie6/7的写法
  • 原文地址:https://www.cnblogs.com/yongjiapei/p/5631240.html
Copyright © 2011-2022 走看看