【问题标题】:move_uploaded_file in PHP not working?PHP 中的 move_uploaded_file 不起作用?
【发布时间】:2016-10-01 23:32:13
【问题描述】:

我正在积极学习,并且正在从事一个 CMS 项目。图片上传卡住了。

PHP

 if ( $_POST['img'])
 $uploads_dir = '/images';
 $tmp_name = $_FILES["img"]["tmp_name"];
 $name = $_FILES["img"]["name"];
 move_uploaded_file($tmp_name, "$uploads_dir/$name");

HTML

 <img src="images/$image" />

MySQL

 $sql = "INSERT INTO affordplan VALUES('$title','$name','$bodytext','$created')";
  return mysql_query($sql);

文件名已上传到数据库,但文件本身并未上传到目标文件夹。

【问题讨论】:

  • 第一:在$uploads_dir中使用绝对路径。第二 - 将 $_POST['img'] 更改为 $_FILES['img']
  • 一旦你有文件夹images 和一次/images - 决定。这是两条不同的路径
  • 对变量也使用正确的 php 代码
  • 检查$_FILES["img"]['error'] 是否有任何非零状态也是一个好主意
  • 分享你提交文件的html?

标签: php php html mysql file-upload


【解决方案1】:

在表格和表格之间键入您的 html 代码,如下所示

<form action="" method="post" enctype="multipart/form-data">
<img src="images/$image" name="img" />
...
</form>

【讨论】:

    【解决方案2】:

    使用$_FILES 代替$_POST 来检查文件是否已发布。还要为变量做适当的报价。然后对于 echo php 变量使用 php 标签。 试试

    PHP:

    if ( $_FILES['img'])
     $uploads_dir = 'images'; // will be on same location where php file exist.
     $tmp_name = $_FILES["img"]["tmp_name"];
     $name = $_FILES["img"]["name"];
     move_uploaded_file($tmp_name, $uploads_dir.'/'.$name);
    

    HTML:

     <img src="images/<?php echo $image;?>" />
    

    MySQL:

     $sql = "INSERT INTO affordplan VALUES('$title','$name','$bodytext','$created')";
      return mysql_query($sql);
    

    【讨论】:

      【解决方案3】:

      //上传多个文件到文件夹

         $upload_dir = '/images';
         if ( $_FILES['img']){
          foreach ($_FILES["img"]["error"] as $key => $error) {
              if ($error == UPLOAD_ERR_OK) {
                  $tmp_name = $_FILES["img"]["tmp_name"][$key];
                  $name = $_FILES["img"]["name"][$key];
                  move_uploaded_file($tmp_name, "$upload_dir/$name");
              }
          }
         }
      

      //MySQL MySQL:

      $sql = "INSERT INTO affordplan VALUES('$title','$name','$bodytext','$created')";
        return mysql_query($sql);
      

      表单提交中使用的 HTML

      <input type="file" name="img" multiple>
      

      以 HTML 格式显示图像

      $dir = "/images/";
      $images = glob($dir."*.jpg");
      foreach($images as $image) {
      echo '<img src="'.$image.'" /><br />';
      }
      

      【讨论】:

        【解决方案4】:

        您正在分配一个与文件名等效的目录。试试这个

        <?php 
          if (!file_exist("your main directory/the file to story")) {
            mkdir("your main directory/the file to story", 0777, true);
          }
        
          // then you start uploading your once the folder is created
        ?>

        这里的过程是如果文件夹目录不存在,mkdir() 函数将创建该文件夹。然后就是开始将文件移动到创建的文件夹的时间。

        【讨论】:

          【解决方案5】:

          将所有代码放入 if 语句中:

          if ( $_POST['img']) {
              $uploads_dir = '/images';
              $tmp_name = $_FILES["img"]["tmp_name"];
              $name = $_FILES["img"]["name"];
              move_uploaded_file($tmp_name, "$uploads_dir/$name");
          }
          

          【讨论】:

            【解决方案6】:

            <form action="phpfilename.php" method="post" 
                   enctype="multipart/form-data">
            
            <input  type="file" name="file" id="file" />	
            <input type="submit" value="Upload Image" name="submit">
            
            	
            
            $file=$_FILES['file']['name'];
            $dest="uploads/$file";
            $src=$_FILES['file']['tmp_name'];
            move_uploaded_file($src,$dest);
            
            $result=mysql_query("insert into tablename(dbfieldname) values('$dest')");

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-07-06
              • 2019-04-09
              • 2016-12-14
              • 2020-11-04
              • 1970-01-01
              • 1970-01-01
              • 2020-10-13
              • 1970-01-01
              相关资源
              最近更新 更多