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

    文件上传需要考虑的细节:

    (1), 如何控制用户上传的文件大小 < 2m
    (2), 如何控制用户上传的文件类型(问题!)
    (3), 如何防止用户图片覆盖问题
    (4), 如何防止同一个用户上传的文件名相同问题

    upload.php 这是一个上传文件的界面.

    如果要上传文件,我们需要把

    <form action=” ” enctype=” multipart/form-data” method=”post”>

    上传文件<input type=”file” name=”myfile”/>

    <input type=”sumbit” value=”上传”/>

    </form>

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <head></head>
        <body>
            <div class="register">
                <!-- 文件上传要注意:①enctype  ②method post-->
    
                <form enctype="multipart/form-data" method="post"  action="uploadprocess.php" name="myform">
                    <table>
                        <tr><td align="center"  colspan="2"><font style="font-size: 40px;font-family: 华文彩云;">文件上传</font></td></tr>
                        <tr><td>请填写用户名:</td><td><input type="text" name="username" /></td></tr>
                        <tr><td>请简单介绍该文件</td><td><textarea name="fileintro" rows="10" cols="80"></textarea></td></tr>
                        <tr><td>请选择你要上传文件:</td><td><input type="file" name="myfile" /></td></tr>
                        <tr><td><input type="submit" value="上传文件" /></td><td></td></tr>        
                    </table>
                </form>
            </div>
        </body>
        </html>
    uploadprocess.php
    <?php
    
     header("Content-type: text/html; charset=UTF-8"); 
        //1.接收提交文件的用户
     $username=$_POST['username'];
     $fileintro=$_POST['fileintro'];
    
     //echo $username.$fileintro;
    
        //我们这里需要使用到 $_FILE
     echo "<pre>";
     print_r($_FILES);
     echo $_SERVER['DOCUMENT_ROOT']."<br />";//获取文件服务器的根目录。
     echo dirname(__FILE__)."<br />";//获取当前文件的目录;
     echo __FILE__."<br/>";//获取当前文件的目录和文件名。
     echo basename(__FILE__);//获取当前文件的目录和文件名。
     echo "</pre>";
    
        //获取文件的大小
        $file_size=$_FILES['myfile']['size'];
    
        if($file_size>2*1024*1024){
            echo "文件过大,不能上传大于2m文件";
            exit();
        }
    
        //获取文件的类型
        $file_type=$_FILES['myfile']['type'];
        if($file_type!='image/jpg' && $file_type!='image/jpeg'){
            echo "文件类型只能是图片 jpg的";
            exit();
        }
    
        //判断是否上传ok
        if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
            //把文件转存到你希望的目录
            $uploaded_file=$_FILES['myfile']['tmp_name'];
            
            //我们给每个用户动态的创建一个文件夹
            $user_path=dirname(__FILE__)."/file/up/".$username;
            
            $user_path=iconv("utf-8","gb2312",$user_path);
            //判断该用户是否已经有文件夹
            if(!file_exists($user_path)){
                mkdir($user_path);
            }
            //$move_to_file=$user_path."/".$_FILES['myfile']['name']; 
            $file_true_name=$_FILES['myfile']['name'];
            $move_to_file=$user_path."/".time().rand(1,1000).substr($file_true_name,strrpos($file_true_name,".")); 
            if(move_uploaded_file($uploaded_file,iconv("utf-8","gb2312",$move_to_file))){
                echo $_FILES['myfile']['name']."上传ok";
            }else{
                echo "文件上传失败";
            }
        }else{
            echo "上传失败";
        }
        ?>

    1.  is_uploaded_file(file)函数判断指定的文件是否是通过 HTTP POST 上传的  

      如果 file 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。

      该函数可以用于确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。

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

    2.  $_FILES

    今天我们着重讲$_FILES函数
    当客户端提交后,我们获得了一个$_FILES 数组

    $_FILES数组内容如下:
    $_FILES['myFile']['name'] 客户端文件的原名称。
    $_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
    $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
    $_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。

    3.  move_uploaded_file(file,newloc)  将上传的文件移动到新位置

            若成功,则返回 true,否则返回 false。

    参数描述
    file 必需。规定要移动的文件。
    newloc 必需。规定文件的新位置。
  • 相关阅读:
    Qt编写安防视频监控系统(界面很漂亮)
    Qt编写数据可视化大屏界面电子看板系统
    Qt开源作品35-秘钥生成器
    Qt开源作品34-qwt无需插件源码
    Qt开源作品33-图片开关控件
    Qt开源作品32-文本框回车焦点下移
    Qt开源作品31-屏幕截图控件
    Qt开源作品30-农历控件
    Qt开源作品29-NTP服务器时间同步
    Qt开源作品28-邮件发送工具
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/5139386.html
Copyright © 2011-2022 走看看