今天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{width:98% px;margin-left:10px;margin-top:10px}
.ablum_out img{margin:4px;border:#CCC 1px solid; }
.ablum_out li{float:left;width: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>

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

PHP 上传文件和读取文件崎岖路的更多相关文章

  1. .Net neatupload上传控件实现文件上传的进度条

    1. 引入bin文件 (可以到neatupload官网下载,也可以到教育厅申报系统中找) 2. 将控件加入到工具栏,在工具栏中点鼠标右键,如图: 3. 加入neatuplaod这个文件夹(可以到nea ...

  2. django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法

    django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...

  3. HTTP文件上传服务器-支持超大文件HTTP断点续传的实现办法

    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传.笔者在以前的博客如何实现支持大文件的高性能HTTP文件上传服务器已经介绍了实现大文件上传的一些基本 ...

  4. 【转载】文件上传那些事儿,文件ajax无刷上传

    导语 正好新人导师让我看看能否把产品目前使用的FileUploader从老的组件库分离出来的,自己也查阅了相关的各种资料,对文件上传的这些事有了更进一步的了解.把这些知识点总结一下,供自己日后回顾,也 ...

  5. PHP上传(单个)文件示例

    通过 PHP,可以把文件上传到服务器. 创建一个文件上传表单 允许用户从表单上传文件是非常有用的. 请看下面这个供上传文件的 HTML 表单: <html> <body> &l ...

  6. SharePoint 2010 ——自定义上传页面与多文件上传解决方案

    最近项目遇到一个很麻烦的问题,原以为很容易解决,结果搞了那么久,先开个头,再慢慢写 SharePoint 2010 ——自定义上传页面与多文件上传解决方案 1.创建Sharepoint空白项目,创建应 ...

  7. echo "不允许上传该类型的文件

    <?php教程 // 上传设置 $maxsize=10002400;            //最大允许上传的文件大小 $alltype=array(".php"," ...

  8. php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)

    网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特 色),学php的人都知道文件上传怎么做,但很多人在编程中 ...

  9. ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug

    ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug 近日发现eWebEditor V2.8 asp 版本上传文件文件名不能包含中文双引号,发现eWebEditor使用ASP“无惧上 ...

随机推荐

  1. Linq之Linq to Objects

    目录 写在前面 系列文章 linq to objects 总结 写在前面 上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml ...

  2. Symfony学习--目录和入口

    1 目录结构 根目录下有: app src vendor web app是存放应用的一些配置文件,如果有一些配置文件或者文档,应当存放在这里面. src是存放你的项目的php代码,这里的php至少必须 ...

  3. 每天一个linux命令(25):df 命令

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命 ...

  4. jquery tree events didn't work

    You should put your js in $(document).ready() like following. Hope this will help you. $(document).r ...

  5. iOS开发中的错误整理,关于用绑定Tag取控件的注意事项,有时候不绑定也是个错!

    如图:红色框中是个自定义的导航工具条titlesView(没有绑定Tag),工具条中有五个按钮(按钮绑定了Tag)以及一个红色的指示器indicatorView(没有绑定Tag),下面的蓝色是可以滚动 ...

  6. Mysql-函数coalesce-查询为空设置默认值

    coalesce(字段,默认值) select coalesce(title,'liu') from a

  7. Java基础-内部类-为什么局部和匿名内部类只能访问局部final变量

    先看下面这段代码: public class Test { public static void main(String[] args) { } public void test(final int ...

  8. Android intent传递list或对象

    方法一: 如果单纯的传递List<String> 或者List<Integer>的话 就可以直接使用 Java代码 intent.putStringArrayListExtra ...

  9. 修改Oracle权限的SQL及常见错误

    1.在cmd命令中进入sqlplus:相应的在DOS命令下执行:(1)set ORACLE_SID = $INSTANCE_NAME(2)sqlplus /nolog(3)connect user/p ...

  10. BZOJ-3226 校门外的区间 线段数+拆点(类似的思想)

    shabi题....bzoj关键字检查freopen??可怕,,1A的卡了一小时.... 3226: [Sdoi2008]校门外的区间 Time Limit: 10 Sec Memory Limit: ...