【问题标题】:My php upload script malfunctioning我的 php 上传脚本出现故障
【发布时间】:2016-02-16 14:32:54
【问题描述】:

这是我的脚本:

<?php
 $target_dir = "uploaded/";
 $target_file = $target_dir . basename($_FILES["image"]["name"]);
 if(isset($_FILES['image'])){
  $errors= array();
  $file_name = $_FILES['image']['name'];
 <?php
 $target_dir = "uploaded/";
 $target_file = $target_dir . basename($_FILES["image"]["name"]);
if(isset($_FILES['image'])){
  $errors= array();
  $file_name = $_FILES['image']['name'];
  $file_size =$_FILES['image']['size'];
  $file_tmp =$_FILES['image']['tmp_name'];
  $file_type=$_FILES['image']['type'];
  $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));

  $expensions= array("zip");

  if(in_array($file_ext,$expensions)=== false){
     $errors[]="extension not allowed, please choose a ZIP file.";
  }

  if($file_size > 2097152){
     $errors[]='File size is more than 2mb . Please email files to files.zipcracker.netne.net';
    }

  if(empty($errors)==true){
     move_uploaded_file($target_file,"uploaded/".$file_name);
     echo "Success";
     }
     else{
     print_r($errors);
     }
     }
      ?>      
     <form action="post.php" method="POST" enctype="multipart/form-data">
     <input type="file" name="image" /><br>
     <input type="submit">

     </form>

     <ul>
        <li>Sent file: <?php if (isset($_FILES['image']['name'])){ 
        echo $_FILES['image']['name']; } 
        else { 
        echo 'No file uploaded !';} 
        ?>
        <li>File size: <?php if (isset($_FILES['image']['size'])) { 
        echo $_FILES['image']['size']; }
        else { echo 'No file uploaded !';} 
        ?>
        <li>File type: <?php if (isset($_FILES['image']['type'])) {
        echo $_FILES['image']['type'] ;} 
            else {
                echo 'No file uploaded !' ;}
                ?>
     </ul>

上面的代码用于从用户那里获取 zip 文件并将其上传到目录“uploaded/”。但它不是将文件上传到目录,名称、大小和类型显示不起作用。他们只是显示没有文件上传!即使在上传之后。我不知道我哪里出错了。请帮我 。
提前致谢!

【问题讨论】:

    标签: php html file-upload php-5.6


    【解决方案1】:

    替换

    move_uploaded_file($target_file,"uploaded/".$file_name);

    move_uploaded_file($file_tmp,"uploaded/".$file_name);

    【讨论】:

      【解决方案2】:

      您可以使用以下上传脚本来验证和上传zip 文件。 (tested)

      <?php
      $upload_errors = array(
          UPLOAD_ERR_OK => "No errors.",
          UPLOAD_ERR_INI_SIZE => "Larger than upload_max_filesize.",
          UPLOAD_ERR_FORM_SIZE => "Larger than form MAX_FILE_SIZE,",
          UPLOAD_ERR_PARTIAL => "Partial upload.",
          UPLOAD_ERR_NO_FILE => "No file.",
          UPLOAD_ERR_NO_TMP_DIR => "No temporary directory.",
          UPLOAD_ERR_CANT_WRITE => "Can't write to disk.",
          UPLOAD_ERR_EXTENSION => "File upload stopped by extension."
      );
      $custom_errors = array();
      
      if(isset($_POST['submit'])){
      
          // process the form
      
          // 1. get the temporary uploaded file by its tmp_name
          $tmp_file = $_FILES['file_upload']['tmp_name'];
      
          // 2. File name for the destination. It could be anything based on our preference
          $target_file = basename($_FILES['file_upload']['name']);
      
          // 3. Specify the upload directory (It's actually a relative link)
          $upload_dir = "uploads";
      
          // 4. Check extension
          $extension = pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION);
          if($extension != "zip"){
              $custom_errors[] = "extension not allowed, please choose a ZIP file.";
          }
      
          // 5. Check size
          if($_FILES['file_upload']['size'] > 2097152){
              $custom_errors[] = "File size is more than 2mb . Please email files to files.zipcracker.netne.net";
          }
      
          // 6. Check if there are no errors
          if(empty($custom_errors)){
              // 7. Now you actually move the file but before that you may use file_exists() to make sure there
              // isn't already a file by the same name. And again, move_uploaded_file will return false if 
              // $tmp_file is not a valid upload file or if it can't be uploaded for any other reason. In place
              // of DIRECTORY_SEPARATOR, you can use "/"
              if(move_uploaded_file($tmp_file, $upload_dir.DIRECTORY_SEPARATOR.$target_file)){
                  // file uploaded successfully
              }else{
                  // error
                  echo $upload_errors[$_FILES['file_upload']['error']] . "<br />";
              }
          }else{
              // error
              foreach($custom_errors as $err){
                  echo $err . "<br />";
              }
          }
      }
      ?>      
      
       <!--Your HTML form-->
       <form action="post.php" method="POST" enctype="multipart/form-data">
           <input type="file" name="file_upload" /><br>
           <input type="submit" name="submit" value="Upload">
       </form>
      
       <!--Output-->
       <ul>
          <li>Sent file: 
              <?php 
              if (isset($_FILES['file_upload']['name'])){ 
                  echo $_FILES['file_upload']['name']; } 
              else { 
                  echo 'No file uploaded !';
              } 
              ?>
          </li>
          <li>File size: 
              <?php 
              if (isset($_FILES['file_upload']['size'])) { 
                  echo $_FILES['file_upload']['size']; }
              else { 
                  echo 'No file uploaded !';
              } 
              ?>
          </li>
          <li>File type: 
              <?php 
              if (isset($_FILES['file_upload']['type'])) {
                  echo $_FILES['file_upload']['type'] ;} 
              else {
                  echo 'No file uploaded !' ;
              }
              ?>
          </li>
       </ul> 
      

      【讨论】:

      • 上传按钮无法点击。在这里查看:zipcracker.netne.net/post_test.php
      • 上传按钮工作正常。但是,当我尝试上传示例 zip 文件时,它显示以下错误,see screenshot。确保您已在根目录中创建 uploads 文件夹。
      • 可能点击问题出在我这边。是的,没有 uploads/ 目录,有一个 uploads/ 目录。对不起,我之前忘了提。 :-)
      • 很高兴听到。请通过接受答案来表达您的感激之情。 :-)
      • 我很可能会接受您的回答,但我仍然无法点击按钮。如果您能指出它发生的原因,那就太好了。不过还是谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 2013-04-05
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多