move_upload_file不起作用

时间:2016-06-28 23:54:17

标签: php mysql sql database upload

嗨所以我试图将图像上传到我的数据库和文件夹以及我表单中的其他元素,除了我无法将文件显示在uploads文件夹中之外,一切都很好。这是我的代码:

if(isset($_POST['submit'])){
    //This gets all the other information from the form
    $name = $_POST['name'];
    $description = $_POST['description'];
    $founded = $_POST['founded'];
    $category = $_POST['category'];
    $fileName = $_FILES['userfile']['name'];
    $tmpName  = $_FILES['userfile']['tmp_name'];
    $fileSize = $_FILES['userfile']['size'];
    $fileType = $_FILES['userfile']['type'];

    $uploaded_dir = "/httpdocs/uploads/";
    $path = $uploaded_dir . $fileName;

    print "Temporary name: " . $_FILES['userfile']['tmp_name'] . "<br>";
    print "Original name: $filename<br>";
    print "Destination: $path<br>";

    if (move_uploaded_file($_FILES["userfile"]["tmp_name"], $path)) {
        print "Uploaded file moved";
        // do something with the file here
    } else {
        print "Move failed";
    }

    $fp      = fopen($tmpName, 'r');
    $content = fread($fp, filesize($tmpName));
    $content = addslashes($content);
    fclose($fp);

    if(!get_magic_quotes_gpc()){
        $fileName = addslashes($fileName);
    }

    // Connects to your Database
    mysql_connect("localhost", "root", "") or die(mysql_error()) ;
    mysql_select_db("my_db") or die(mysql_error()) ;


    //Writes the information to the database
    $query = "INSERT INTO mytable (name, description, founded, category, logo)".
    "VALUES ('$name', '$description', '$founded', '$category', '$fileName')";

    mysql_query($query) or die('Error, query failed');
    include 'library/closedb.php';

    echo "<br>File $fileName uploaded<br>";
}

这是我每次都得到的回复

Temporary name: /tmp/phpA8JjRz
Original name:
Destination: /httpdocs/uploads/fixed.png
Move failed
File fixed.png uploaded

这是我的表格

<form method="POST" action="path" enctype="multipart/form-data">
<label>Flying School</label><br />
<input type="text" name="name" id="fsn" placeholder="Flying School Name" required/><br />
<label>Category</label><br />
<select name="category">
  <option value="0">one</option>
  <option value="1">two</option>
  <option value="2">three</option>
  <option value="3">four</option>
</select><br />
<label>Founded</label><br />
<input type="text" name="founded" id="founded" placeholder="yyyy-mm-dd" /><br />
<label>Logo</label><br />
<!--<div class="uploadlogo">-->
<input type="file" name="userfile" />
<!--</div>--><br />
<label>Cover Image</label><br />
<div class="coverimage">
<input type="file" name="cover" id="cover" />
</div><br />
<label>Description</label><br />
<?php
  if (isset($_POST['description'])) $initialentry=$_POST['description'];
  else $initialentry='';
  $editor = JFactory::getEditor();
  echo $editor->display( 'description',  $initialentry, '80%', '350', '55', '20', false  ) ;
?><br />
<label>Photos</label><br />
<ul id="addPhotos">
<li><div class="upload1">
<input type="file" name="acimg1" id="acimg1" />
</div></li>
<li><div class="upload2">
<input type="file" name="acimg2" id="acimg2" />
</div></li>
<li><div class="upload3">
<input type="file" name="acimg3" id="acimg3" />
</div></li>
</ul>
<br />
<label>Choose here</label><br />
<label class="checkbox-inline">
  <input type="checkbox" value="Rss">R22
</label>
<label class="checkbox-inline">
  <input type="checkbox" value="R44">R44
</label>
<label class="checkbox-inline">
  <input type="checkbox" value="R66">R66
</label>
<label class="checkbox-inline">
  <input type="checkbox" value="AS355">AS355
</label>
<label class="checkbox-inline">
  <input type="checkbox" value="PA28">PA28
</label>
<label class="checkbox-inline">
  <input type="checkbox" value="CESSNA172">Cessna 172
</label>
<label class="checkbox-inline">
  <input type="checkbox" value="CESSNA152">Cessna 152
</label><br />
<input class="btn btn-primary" type="submit" name="submit" value="Submit" />

提前感谢!

2 个答案:

答案 0 :(得分:3)

  

“已经解决了!感谢男人,我得到了文件夹的真正路径,它像梦一样工作!!你的朋友是一个救生员! - 戴夫林奇”

将我的评论写回答:

/httpdocs/uploads/应该是一个完整的系统路径。

即:/var/usr/httpdocs/uploads/或相对路径。即:../uploads/

我怀疑你的根是/httpdocs/。系统路径通常在大多数服务器上以/var/usr/开头。其他人有/var/usr/public_html/等等。还有更多,但这些都是足够的例子。

使用phpinfo()将显示您的系统路径。

同样如评论中所述:

您目前的代码向SQL injection开放。使用prepared statementsPDOprepared statements

答案 1 :(得分:0)

首先:检查管理员权限,了解您选择的用于移动上传文件的路径

其次:检查 root 文件夹(如果目录path/中是否存在),否则您将无法移动上传的文件。尝试../dirname 返回更改 dir