zoukankan      html  css  js  c++  java
  • PHP 上传文件和读取文件崎岖路

    今天php上传文件和读取文件没有搞出来,全靠后来大神来帮忙,总结一下:主要涉及到一下几个方面,在ubuntu下mkdir文件夹的时候要注意权限问题,一般情况下php是以一个较低的权限去执行的,所以如果你所mkdir的位置不对可能是权限不对,这时候你可以到tmp文件下面试一试,如果这里可以的话那说明确实是文件权限的问题,如果真的是权限问题可以有以下解决方法,方法一:chmod 0777 name 这样是给文件夹以所有用户可以访问的权限,但是这样不安全,所以还有方法二:(因为PHP之行的用户组是:www-data,所以下面的用户组名都是www-data )新建一个文件夹 mkdir dir name  然后 sudo chgrp 用户组名  filename  最后  sudo chown 用户组 filename  这样就新建了一个该用户组的文件夹,这样php执行该文件夹下面的所有权限,而其他用非超级权限户组的不能执行。。。这样就可以mkdir和上传文件了。

    我写的主要代码如下:

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    <?
    $album ="data/album";//设置一个变量用于存放相册的目录名,这里首先在上面新建的www-data用户组的文件夹data下面,因为这个文件夹是php执行用户的,所以要新建一个文件夹相册album文件夹目录
    if(!is_dir($album))//指向的文件夹是否存在如果没有这个目录,就创建这个变量目录
    {
        mkdir($album);//创建这个文件夹
    }
    if(isset($_POST["action"]) and $_POST["action"] == "upload")//是否存在约定变量,并且值正确(这里是input  type = hidden  穿过来的变量名 action 其值为upload)
    {    
        if(isset($_FILES["file"]["tmp_name"]))//检测$_FILES变量中是否存在数据,这里是传过来的 (input type = file )
         {
            $filename = $_FILES["file"]["name"];//定义新的文件名
            if(move_uploaded_file($_FILES["file"]["tmp_name"],$album."/".$filename))//把上传的临时文件移动到新目录 (两个参数,第一个源文件,第二个目标文件)
            {
                echo "上传成功!";
            }
            else
            {
                echo "上传文件失败!";
            }
        }
    }
    ?>

    <!-- 头和样式设计-->
    <html>
    <head>
    <meta http-equiv = "Content-Type" content = "text/html;charset = utf8"/>//乱码就设置charset = utf8
    <title>相册</title>
    <style>
    body{ margin:0px;padding:0px;background-color:#EFEFEF;font-size:12px;}
    ul{margin:0px;padding:0px;list-style:none;}
    a{color:#333333;text-decoration:none;}
    a:hover{color:#999999;}
    .ablum_out{98% px;margin-left:10px;margin-top:10px}
    .ablum_out img{margin:4px;border:#CCC 1px solid; }
    .ablum_out li{float:left;180px;text-align:center;margin:5px;}
    </style>
    </head>



    <!--供上传文件的HTML表单 -->
    <body>
    <form action = "" method ="POST" enctype= "multipart/form-data" name="forml" id = "forml"> <!--submit 跳转到该页面从头执行 -->
    <label>上传图片
    <input type="file" name = "file"/>
    </label>
    <label>
    <input type="submit" name="submit" value = "submit"/>
    <input Type="hidden" name="action" value= "upload"/>//传递参数,不能被用户知道
    </label>
    </form>
    <!--       -->

    <hr size= "1"/><!--水平线-->

    <div class = "ablum_out"><!--定义文档中的分区或节-->
    <ul> <!--标签定义无序列表-->
    <?
    $dh = dir($album);//打开一个目录句柄,并返回一个对象。这个对象包含三个方法:read() , rewind() 以及 close()。若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。
    echo "相册目录:".$dh->path."<br>";

    while(false !==($file = $dh->read()))
    {
        if( $file != "." and $file != "..")
        {
            echo '<li> <a href="'.$album."/".$file.'" target ="_blank"> <img src = "'.$album."/".$file.'"  width = "160" height = "120" border = "0"/>    <br/>'.$file.'</a></li>';
        }
    }
    $dh->close();
    ?>
    </ul>
    </div>
    <br/><!--只是简单地开始新的一行-->
    </body>
    </html>

    //初学者有一个大神带那是多么幸福的事情呀,你能够很快的成长起来。。。

  • 相关阅读:
    CountDownLatch, CyclicBarrier, Semaphore
    工具类中使用@Autowired失败问题
    可重入锁(递归锁)
    读写锁
    自旋锁
    加入BLOG
    控制字符串的超长部分用省略号表示
    java常见面试题总结
    maven打包不运行test脚本的命令
    DataGrip使用教程
  • 原文地址:https://www.cnblogs.com/hackerl/p/3153810.html
Copyright © 2011-2022 走看看