无法在PHP中执行文件上载

无法在PHP中执行文件上载

问题描述:

I want to upload files in PHP. I wrote

<form target="_self" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<input name="submit" type="submit" value="submit" />
</form>
<?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"];
  }

?>

but it's not working. Files are not visible to me, that where they are going?

我想用PHP上传文件。 我写了 p>

 &lt; form target =“_ self”enctype =“multipart / form-data”&gt; 
&lt; input type =“file”name =“file”id  =“file”/&gt; 
&lt; input name =“submit”type =“submit”value =“submit”/&gt; 
&lt; / form&gt; 
&lt;?php 
 
if($ _FILES [“file  “] [”错误“]&gt; 0)
 {
 echo”错误:“。  $ _FILES [“file”] [“error”]。  “&lt; br /&gt;”; 
} 
else 
 {
 echo“上传:”。  $ _FILES [“file”] [“name”]。  “&lt; br /&gt;”; 
 echo“Type:”。  $ _FILES [“file”] [“type”]。  “&lt; br /&gt;”; 
 echo“Size:”。  ($ _FILES [“file”] [“size”] / 1024)。  “Kb&lt; br /&gt;”; 
 echo“存储在:”。  $ _FILES [“file”] [“tmp_name”]; 
} 
 
?&gt; 
  code>  pre> 
 
 

但它不起作用。 文件对我来说是不可见的,它们在哪里? p> div>

You are a long way from a working script

You can try

<?php
$output = array ();
$errors = array ();
$savePath = "uploaded"; // PATH to upload images
$allowedExt = array (
        "png",
        "jpg" 
);
if (isset ( $_FILES ['file'] ) && $_FILES ["file"] ["error"] == UPLOAD_ERR_OK) {

    $fileName = $_FILES ['file'] ['name'];
    $fileSize = $_FILES ['file'] ['size'];
    $fileTemp = $_FILES ['file'] ['tmp_name'];
    $fileType = $_FILES["file"]["type"] ;
    $fileExt = pathinfo ( $fileName, PATHINFO_EXTENSION );
    $fileExt = strtolower ( $fileExt );

    //var_dump($fileExt);

    if (!in_array ( $fileExt, $allowedExt )) {
        $errors [] = "Invalid File Extention";
    }

    if ($fileSize > 800*1024) {
        $errors [] = "File Too large";
    }

    if (! is_writable ( $savePath )) {
        $errors [] = "File Destination not writeable";
    }

    $fileDst = $savePath . DIRECTORY_SEPARATOR . $fileName;
    $filePrifix = basename ( $fileName, "." . $fileExt );
    $i = 0;
    while ( file_exists ( $fileDst ) ) {
        $i ++;
        $fileDst = $savePath . DIRECTORY_SEPARATOR . $filePrifix . "_" . $i . "." . $fileExt;

    }
    if (count ( $errors ) == 0) {
        if (@move_uploaded_file ( $fileTemp, $fileDst )) {
            $output['STATUS'] = "OK";
            $output['TYPE'] = $fileType;
            $output['Size'] = $fileSize;
            $output['Destination'] = $fileDst;
        } else {
            $errors [] = "Error Saving File";
        }

    }


    if(count($errors) > 0)
    {
        echo "<h2>Upload Error</h2>" ;

        foreach ($errors as $error)
        {
            echo $error , "<br/>" ;

        }
    }
    else
    {
        echo "<h2>File  Uploaded</h2>" ;
        foreach ($output as $key => $value)
        {
            echo $key , ":" , $value , "<br/>" ;
        }

    }
}

?>
<br/>
<br />
<form method="post" target="_self" enctype="multipart/form-data">
    <input type="file" name="file" id="file" /> <input name="submit"
        type="submit" value="submit" />
</form>

Your code isn't even close to working because you're not actually doing any file uploading through PHP. I suggest starting with a PHP file upload tutorial (more) and trying again. If you have any problems with your new code ask for help and show us the code you're having problems with.

You need to use POST method in order to get file uploads working.
So just add method="post" attribute to the form tag and you're done.