菜鸟教程php文件上传,菜鸟教程php文件上传不了

发布时间:2022-11-26

本文目录一览:

  1. php如何实现文件上传
  2. php如何实现文件上传啊
  3. 怎样用PHP实现文件上传

php如何实现文件上传

所谓上传就是把文件从你电脑本地复制到你的项目指定文件夹下。 但这有个中间过程,就是复制到系统指定的临时文件夹生成临时文件。 然后将临时文件复制到你指定的文件夹下。 剩下的就是各种验证了。 给你个图片上传方法

//上传一张图片
$pic = $_FILES['pic'];
function upload($pic){
    $tmp_name = $pic['tmp_name'];
    $name = $pic['name'];
    $type = $pic['type'];
    $size = $pic['size'];
    if(!is_uploaded_file($tmp_name)) exit('不是上传文件');
    //判断是否是图片
    $mine = array('image/png','image/jpg','image/gif','image/jpeg');
    if(!in_array($type,$mine)) exit('图片格式不正确');
    //判断是否有错误码
    $error = $pic['error'];
    switch ($error) {
        case 1:
            exit("超出上传文件的最大限制");
        case 2:
            exit("超出了指定的文件大小");
        case 3:
            exit("只有部分文件被上传");
        case 4:
            exit("文件没有被上传");
        case 6:
            exit("找不到临时文件夹");
        case 7:
            exit("文件写入失败");
    }
    echo "================<br/>";
    echo "上传文件名称是:".$name."<br/>";
    echo "上传文件类型是:".$type."<br/>";
    echo "上传文件大小是:".$size."<br/>";
    echo "上传后系统返回的值是:".$error."<br/>";
    echo "上传文件的临时存放路径是:".$tmp_name."<br/>";
    echo"开始移动临时文件".'<br>';
    $des_name = 'up/'.mt_rand().time().'.'.basename($type);
    $res = move_uploaded_file($tmp_name, $des_name);
    if($res){
        echo "================<br/>";
        echo "上传图片成功".'<br>';
    }
}

php如何实现文件上传啊

PHP 一般使用 POST 方法上传文件,下面是一个简单的文件上传示例,里面有相关的注释: up.htm 文件:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Up Sample</title>
</head>
<body>
<form action="up.php" method="post" enctype="multipart/form-data">
    <!--备注:表单中 enctype="multipart/form-data" 的意思,是设置表单的 MIME 编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了 multipart/form-data ,才能完整的传递文件数据,进行下面的操作,并且 method 要设置为 "post" -->
    File:<br />
    <input type="file" name="upfile" size="30"><br />
    <!--上传框要设置 type="file" -->
    <br />
    <input type="submit" value="Upload">
</form>
</body>
</html>

up.php 文件

<?php
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])){
    //如果有文件上传
    //is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的,返回布尔值
    //$_FILES['upfilename']['...'],其中的 'upfilename' 即为上传框的 name 属性
    //$_FILES['upfile']['tmp_name'] -- 文件被上传后在服务端储存的临时文件名,一般是系统默认
    if(!eregi('pdf', $_FILES['upfile']['type'])){
        //我们这里假设你要上传一个 pdf 文件
        //if(!eregi('pdf', $_FILES['upfile']['type'])) 这个是判断上传文件类型的,是不是 pdf 文件,当然,若是想判断是否是 jpg 文件的话,将 pdf 改成 jpg 就可以了,即 if(!eregi('jpg', $_FILES['upfile']['type']))
        //$_FILES['upfile']['type'] 是文件的 MIME 类型,如果浏览器提供此信息的话。例如“image/gif”
        echo 'The uploaded file is not an pdf File! Please upload a right file!';
    }else{
        $filename = $_FILES['upfile']['name'];
        //$filename = $_FILES['upfile']['name'],这里是指定上传后的文件名,这里使用的仍是原来的文件名字,($_FILES['upfile']['name'] 是原始文件的名字)
        if(move_uploaded_file($_FILES["upfile"]["tmp_name"], dirname(__FILE__)."/upload_file/".$filename)){
            //这里就是上传文件
            //dirname(__FILE__)."/upload_file/". $file_name -- 指定上传的目标文件,假设你要上传的目标文件夹upload_file 是和当前文件(upload.php)在同一文件夹下
            //chmod(dirname(__FILE__)."/upload_file/". $file_name, 0444);
            //上面注释掉的是用来改变上传后文件的属性,444 即只有执行和读的权限(看情况加上)
            echo $_FILES["upfile"]["name"] . " uploaded succeed!!!";
        }else{
            echo "Can't upload!!!";
        }
    }
}else{
    echo "File is not selected";
}
//需要注意的:
/*
在你的 up.php 同级目录下建立 upload_file 文件夹,来存放上传的文件
在上传之前要看一下 php 的配置文件:php.ini 中的三处设置
1.是否允许文件上传:( file_uploads = On )
2.文件上传的最大 size: ( upload_max_filesize )
3.post 的最大 size ( post_max_size ) 这个大小设置成和 uplod_max_filesize 一样大或比 uplod_max_filesize 大
*/
/*
这只是很简单的一个文件上传的例子,为了帮助理解,只是判断了一下上传文件的类型,还可以使用 if 语句来判断上传文件的大小($_FILES['upfile']['type'])),并进行提示控制等,相关可以查阅 $_FILE['upfile'] 数组的各个值分别代表什么
*/
?>

可以看看 php100 里面的视频,其中一节就是介绍文件上传的。

怎样用PHP实现文件上传

创建一个文件上传表单

允许用户从表单上传文件是非常有用的。 请看下面这个供上传文件的 HTML 表单:

<html>
<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>

请留意如下有关此表单的信息:

  • form 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"
  • input 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

创建上传脚本

"upload_file.php" 文件含有供上传文件的代码:

<?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"];
}
?>

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。 第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name""error"。就像这样:

  • $_FILES["file"]["name"] - 被上传文件的名称
  • $_FILES["file"]["type"] - 被上传文件的类型
  • $_FILES["file"]["size"] - 被上传文件的大小,以字节计
  • $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
  • $_FILES["file"]["error"] - 由文件上传导致的错误代码 这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制

在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif.jpeg 文件,文件大小必须小于 20 kb:

<?php
if ((($_FILES["file"]["type"] == "image/gif") ||
    ($_FILES["file"]["type"] == "image/jpeg") ||
    ($_FILES["file"]["type"] == "image/pjpeg")) &&
    ($_FILES["file"]["size"] < 20000)) {
    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"];
    }
} else {
    echo "Invalid file";
}
?>

注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg

保存被上传的文件

上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。 这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

<?php
if ((($_FILES["file"]["type"] == "image/gif") ||
    ($_FILES["file"]["type"] == "image/jpeg") ||
    ($_FILES["file"]["type"] == "image/pjpeg")) &&
    ($_FILES["file"]["size"] < 20000)) {
    if ($_FILES["file"]["error"] > 0) {
        echo "Return Code: " . $_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 "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
        if (file_exists("upload/" . $_FILES["file"]["name"])) {
            echo $_FILES["file"]["name"] . " already exists. ";
        } else {
            move_uploaded_file($_FILES["file"]["tmp_name"],
                "upload/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        }
    }
} else {
    echo "Invalid file";
}
?>

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

注释:这个例子把文件保存到了名为 "upload" 的新文件夹。