Move_uploaded_file()函数不起作用

use*_*054 32 php file

我正在网站上工作,我希望用户能够上传文件.所以我正在努力学习如何做到这一点.我研究过,它说我必须使用函数move_uploaded_file().我编写的代码就像在示例中一样(更改数据),但它不起作用.请帮助我,我是新来的.这是我到目前为止所做的:

<!DOCTYPE html>
<html>
   <head>
   </head>
<body>
   <form action="upload_file.php" method="POST" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
      <input type="file"name="file">
      <input type="submit">
   </form>
</body>
<html>
Run Code Online (Sandbox Code Playgroud)

这是upload_file.php:

<!DOCTYPE html>
<html>
  <head>
  <head>
     <body>
        <?php
          $move = "/Users/George/Desktop/uploads/";
          echo $_FILES["file"]['name']."<br>";
          echo $_FILES["file"]['tmp_name']."<br>";
          echo $_FILES["file"]['size']."<br>";
          echo $_FILES['file']['error']."<br>";
          move_uploaded_file($_FILES['file']['name'], $move);
        ?>
     <body>
<html>
Run Code Online (Sandbox Code Playgroud)

Vla*_*ler 47

文件将存储在临时位置,使用tmp_name而不是name

if (move_uploaded_file($_FILES['image']['tmp_name'], __DIR__.'/../../uploads/'. $_FILES["image"]['name'])) {
    echo "Uploaded";
} else {
   echo "File was not uploaded";
}
Run Code Online (Sandbox Code Playgroud)

  • 您还应该检查函数的返回值.您的目的地的目录权限怎么样? (2认同)

小智 18

尝试使用copy()函数而不是move_uploaded_file().它的工作对我来说.

copy($_FILES['file']['tmp_name'], $path);
Run Code Online (Sandbox Code Playgroud)


Sha*_*ran 16

这是一个有效的例子.

HTML表格:

<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>
Run Code Online (Sandbox Code Playgroud)

PHP代码:

<?php

    $uploaddir = '/var/www/uploads/';
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

    echo "<p>";

    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
      echo "File is valid, and was successfully uploaded.\n";
    } else {
       echo "Upload failed";
    }

    echo "</p>";
    echo '<pre>';
    echo 'Here is some more debugging info:';
    print_r($_FILES);
    print "</pre>";

    ?>
Run Code Online (Sandbox Code Playgroud)


Han*_*nky 9

$move = "/Users/George/Desktop/uploads/".$_FILES['file']['name'];
Run Code Online (Sandbox Code Playgroud)

那是一个.

move_uploaded_file($_FILES['file']['tmp_name'], $move);
Run Code Online (Sandbox Code Playgroud)

那是两个.

检查uploads目录是否可写

那是三个.

返回值

成功时返回TRUE.

如果filename不是有效的上载文件,则不会执行任何操作,move_uploaded_file()将返回FALSE.

如果filename是有效的上载文件,但由于某种原因无法移动,则不会执行任何操作,并且move_uploaded_file()将返回FALSE.此外,还会发出警告.

查看函数的返回值.

而已.


Joe*_*eng 5

也许您需要为您的文件授予更多权限。

假设您的代码在 /var/www/my_project 下

尝试 chmod -R 777 /var/www/my_project

  • 我**强烈**建议您注意这里的安全风险。如果您确实需要这样做,请将 php 添加到拥有该文件夹的组并使用 `664` 而不是 `777` (8认同)

Kin*_*gle 5

这个答案来晚了,但它可能会帮助像它帮助我的人

只需确保您已授予目标文件的用户权限

sudo chown -R www-data:www-data /Users/George/Desktop/uploads/

  • @谢谢。它对我帮助很大。 (2认同)