1

嗨,我在服务器中上传文件时遇到问题。这是我的代码:

                   <?php
                   session_start();
                   $user=$_SESSION['user_level'];
                   Check if a file has been uploaded
                   if(isset($_FILES['fileToUpload'])) {
          // Make sure the file was sent without errors
                   if($_FILES['fileToUpload']['error'] == 0) {
         // Connect to the database
                   $dbLink = new mysqli('$host', '$username', '$pass', '$tbl_name');
                   if(mysqli_connect_errno()) {
                   die("MySQL connection failed: ". mysqli_connect_error());
                   }

             // Gather all required data
           //$id= mysql_insert_id(); 
                  $name = $dbLink->real_escape_string($_FILES['fileToUpload']['name']);
                  $mime = $dbLink->real_escape_string($_FILES['fileToUpload']['type']);
                  $data = $dbLink->real_escape_string
                  (file_get_contents($_FILES['fileToUpload']['tmp_name']));
                  $size = intval($_FILES['fileToUpload']['size']);

            // Create the SQL query
                  $query = "
                  INSERT INTO files (email,name,type,size,content)
                  VALUES ('$user','$name', '$mime', $size, '$data')";

           // Execute the query
                  $result = $dbLink->query($query);}}
          ?>
                  <?php 
                  move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
            "/home/u152912911/public_html/upload" . $_FILES["fileToUpload"]["name"]);
                ?>

                  <?php
                  if ($_FILES["fileToUpload"]["error"] > 0)
                  {
                  echo "Apologies, an error has occurred.";
                  echo "Error Code: " . $_FILES["fileToUpload"]["error"];
                  }
                  else
                  {
                  move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
                  "/home/u152912911/public_html/upload" . $_FILES["fileToUpload"] 
                  ["name"]);
                  }
                  if (($_FILES["fileToUpload"]["type"] == "image/DOC")
                  || ($_FILES["fileToUpload"]["type"] == "image/jpeg")
                  || ($_FILES["fileToUpload"]["type"] == "image/png" )
                  && ($_FILES["fileToUpload"]["size"] < 10000))
                  {
                  move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
          "/home/u152912911/public_html/upload" . $_FILES["fileToUpload"]["name"]);

              ECHO "Files Uploaded Succesfully";
              echo'<script type="text/javascript">

          window.location.href ="resume2.php"
                  </script>';
                   }
                  else
                  {
                  }
                  echo "Your Resume was Successfully Upload";
                  ?>

我有一个名为“upload”的文件夹,它将存储用户上传的所有文件。我的目标是将文件存储在 mysql 和“上传”文件夹中。文件的存储工作正常,没有错误消息,但我在“上传”文件夹中看不到上传的文件。谢谢你的帮助!

4

4 回答 4

3
"/home/u152912911/public_html/upload" . $_FILES["fileToUpload"]["name"]

/您在 .之后缺少一个斜杠upload。将其更改为:

"/home/u152912911/public_html/upload/" . $_FILES["fileToUpload"]["name"]

实际上,该文件被保存为目录中带有前缀的文件uploadpublic_html

如果可能,您应该使用相对路径来实现可移植性,很有可能只需

"upload/" . $_FILES["fileToUpload"]["name"]

……就够了。

然而

你不应该$_FILES["fileToUpload"]["name"]像这样直接使用。考虑如果用户将字符串../index.php作为文件名发送会发生什么 - 用户将能够覆盖您的index.php文件。另外,考虑如果两个用户上传一个名为的文件会发生什么picture.jpg- 第二次上传会覆盖第一个。

相反,您应该为自己创建的文件使用一个名称——依赖这样的用户输入是不安全的。

于 2013-01-02T10:32:22.173 回答
2

你忘记了一个斜线:

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
          "/home/u152912911/public_html/upload" . $_FILES["fileToUpload"]["name"]);

应该

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
          "/home/u152912911/public_html/upload/" . $_FILES["fileToUpload"]["name"]);

另外,检查成功的返回值,不要假设它。

于 2013-01-02T10:33:01.057 回答
0

如果它在本地主机上工作正常并且在在线测试中出现问题,则要求服务器主机将文件夹权限更改为 777。

于 2013-01-02T10:46:13.630 回答
0

请检查提供给您存储文件的文件夹的权限。

于 2013-01-02T10:33:43.123 回答