兄弟姐妹,谁能解释一下php上传文件的方式?
用php实现文件的上传必须通过表单吗?

解决方案 »

  1.   

    自己看一下手册:
    PHP中文版开发手册[CHM]
      

  2.   

    好像不能说是php实现文件上传~上传文件就是把文件附到表单后面post给服务器的~
      

  3.   

    贴个demo:
    ~~~~~~~~~~~~~~~~~~~~~~
    -----------------------------------------------------------------------------
    <form action="test.php" method="post" enctype="multipart/form-data">
      <input type="file" name="file" />
      <input type="submit" value="提交" />
    </form><?php 
    //print_r($_FILES);//test:
    Upload($_FILES); 
    ?> 
    /** 
    * name:文件上传 
    * params:$file($_FILE超全局变量) 
    * return:图片相对地址(用于插入数据库) 
    **/ 
    function Upload($files){ 
      //允许:上传文件类型 
      $type = array("jpg","jpeg","gif","bmp","png",'mp3'); 
      //上传路径 
      $path = "./path/"; 
      //获取:上传文件后缀 
      $ftype = strtolower(substr(strrchr($files["file"]["name"], '.'), 1));  
      //检查:文件类型 
      if(!in_array($ftype,$type)){//不通过则执行 
        $types=implode(",",$type); 
        echo "您只能上传以下类型文件: ",$types," <br>"; 
        return false; 
      }else{
          //判断文件大小 
          if($files["file"]["size"] > 10000000){ 
            echo "文件过大,已超过10MB"; 
            return false; 
          }else{        
            do{ 
              //获取一个新文件名 
              $fname = time().'_'.$ftype; 
              $upfile = $path.$fname; 
              //判断此文件名是否被占用,若没有则跳出循环,重复则重新生成 
            }while(file_exists($upfile));         //上传文件 
            if(move_uploaded_file($files["file"]["tmp_name"],$upfile)){ 
           //注意
              var_dump($upfile);           
              return $upfile; 
            }else{ 
              return false; 
          } 
        } 
      } 
      return false; 
      

  4.   

    想深入了解,请看HTTP相关的RFC文档
    个人认为,在正常情况下(因为有的人喜欢胡扯,他可以说可以用FTP传啊,安装控件啊),不用表单应该不行.
      

  5.   

    不是php上传文件,而是浏览器上传文件!
    当表单属性 method="post" 和 enctype="multipart/form-data"
    提交时浏览器就会将表单中 input type=file 对象所指定的文件上传至服务器。这是HTTP协议的一部分
    php只是简化了程序读取上传文件的过程而已通过HTML页面上传文件,只能用表单如果通过php程序上传文件,可以用curl函数以上都是指使用http协议,当然还可以用其他协议来完成文件上传
      

  6.   

    表单只是一种工具,用其它方法一样可以上传文件,只不过很少有人用,curl,socket,这些都能上传.
      

  7.   

    用表单的文件域.
    在处理页面中获取,并存入images文件夹中
    $fileArr=$_FILE['file'];
    if(is_uploaded_file($fileArr['tmp_name']))
    {
      $fileName="images/".$fileArr['name'];
      move_uploaded_file($fileArr['tmp_name'],$fileName);
    }
      

  8.   

    最简单的文件上传代码
    <?php 
    move_uploaded_file($_FILES['pic']['tmp_name'],$_FILES['pic']['name']);
    //move_uploaded_file()翻译成中文的意思就是:移动-已经上传的-文件
    ?>
    <form action="" method="post" enctype="multipart/form-data" name="form1">
      <input name="pic" type="file" id="pic">
      <input type="submit" name="Submit" value="提交">
    </form> 相关知识:
    $_FILES["表单上文件框的名称"]["相关内容"]为后台接收到的文件的相关信息,是内置的一个超全局变量,一共包括五种内容:
    原文件名name
    类型type
    大小size
    错误信息error(0为正常,1234分别代表四个不同的错误信息)
    上传到临时文件夹后的路径及名称tmp_name$_FILES["uppic"]["error"]==0  判断上传是否出错is_uploaded_file($_FILES["uppic"]["name"])  判断是否上传move_uploaded_file(移动对象,目标目录及文件名)移动已上传的文件,返回true或false,表示移动是否成功