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

    LAMP环境:

    Linux Mint 16 32bits xfce

    apache 2.4.6 Ubuntu

    php 5.5.3

    默认www是/var/www,我用符号连接到了/home/tony/www

    然后修改sudo chmod 777 www

    上传页面代码:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>

    <form action="upload_file.php" method="post"
    enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file" /> 
    <br />
    <input type="submit" name="submit" value="Submit" />
    </form>

    </body>
    </html>

    这个代码要加head指明字符集,下面的代码同理

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <?php
    if ($_FILES["file"]["error"] > 0)
      {
      echo "Error: " . $_FILES["file"]["error"] . "<br />";
      }
    else
      {
      echo "Upload: " .$_FILES["file"]["name"]. "<br />";
      echo "Type: " . $_FILES["file"]["type"] . "<br />";
      echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
      echo "Stored in: " . $_FILES["file"]["tmp_name"]."<br />";
      }
      if(is_uploaded_file($_FILES["file"]["tmp_name"])){
       echo "legal uploaded file<br>";
       }else echo "illegai uploaded file<br>";
      $src_path= $_FILES["file"]["tmp_name"];
      $des_path= '/home/tony/www/upload/'."a.jpg";
      //$des_path= '/home/tony/www/upload/'.$_FILES["file"]["name"];
      echo $src_path . "<br />";
      echo $des_path . "<br />";
      if(file_exists($src_path)){
       echo "file exists.<br />";
      }
      if(move_uploaded_file($src_path,$des_path)){
          echo "Stored in: "."<br />";
      }else  echo"<br>move failed.";
     printf("<img src=%s />","upload/a.jpg");
    ?>

    这段出来代码冗杂,不美观。但是说明了一些问题。

    1/还是要指定字符集,不然在不同的浏览器或者系统上会有问题,apache2的配置文件不要AddDefaultCharset功能,如果改动过请改为AddDefaultCharset Off;重启apache2

    2/临时文件在php执行之后就会消失,肉眼难见,可以在最后来个while(1);

    3/有人问为什么不可以用其他函数来转移上传的文件呢?既然我都有路径了。http这套上传机制可以保证一定安全性,如果你能验证上传的安全性,其他函数也可以胜任

    4/我老是move不成功,后来几经调查,是新的路径没有权限,都是linux的安全性惹的祸。试过用chmod -R 777 www,发现其下upload没有获得777的权限。。。这是bug?重新对upload改权限即可

    最后插入图片用绝对路径不行,要用相对路径,到现在我都不明白为什么

    应该在上传处理php那里加入一些文件类型检测啊,文件头检测啊,禁止运行的限制,这些安全性或者功能限制等到有空我再补上来吧。

  • 相关阅读:
    Redis学习-开始
    MongoDb学习1
    Git删除tag
    简单实现Windows服务 TopShelf
    autofac 注入普通服务和WCF服务
    MVC过滤器之 OnActionExcuted
    jquery的$.extend()、$.fn和$.fn.extend()
    quartz_jobs.xml标准配置
    常用工具类11-上传类
    常用工具类10-上传水印类
  • 原文地址:https://www.cnblogs.com/jasonxiaoqinde/p/6377722.html
Copyright © 2011-2022 走看看