更改HTML输入名称时,PHP文件上载失败

时间:2018-05-09 04:37:56

标签: php html file-upload

我是HTML和PHP的新手。我使用https://gist.github.com/taterbase/2688850中的html / php代码在我的Web服务器上实现文件上传页面。创建"上传/"服务器中的文件夹,并授予chmod 777权限。

当我使用name =" uploaded_file",原来,我可以在文件夹中看到该文件。但是,当我更改名称=" xxx"对于别的东西,比如另一个名字或它的数组形式,屏幕上没有消息,在uploads文件夹中看不到文件。

是" uploaded_file"修复或硬编码的价值?我的目标是稍后使用数组,以便为​​多个文件上传,但是这个名称更改限制不允许我。

请参阅下面的工作和非工作样本:

upload.php(name =" uploaded_file")工作

<!DOCTYPE html>
<html>
<head>
  <title>Upload your files</title>
</head>
<body>
  <form enctype="multipart/form-data" action="upload.php" method="POST">
    <p>Upload your file</p>
    <input type="file" name="uploaded_file"></input><br />
    <input type="submit" value="Upload"></input>
  </form>
</body>
</html>
<?PHP
  if(!empty($_FILES['uploaded_file']))
  {
    $path = "uploads/";
    $path = $path . basename( $_FILES['uploaded_file']['name']);
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
      echo "The file ".  basename( $_FILES['uploaded_file']['name']). 
      " has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
  }
?>

upload.php(name =&#34; user_file&#34;)不能工作

<!DOCTYPE html>
<html>
<head>
  <title>Upload your files</title>
</head>
<body>
  <form enctype="multipart/form-data" action="upload.php" method="POST">
    <p>Upload your file</p>
    <input type="file" name="user_file"></input><br />
    <input type="submit" value="Upload"></input>
  </form>
</body>
</html>
<?PHP
  if(!empty($_FILES['user_file']))
  {
    $path = "uploads/";
    $path = $path . basename( $_FILES['user_file']['name']);
    if(move_user_file($_FILES['user_file']['tmp_name'], $path)) {
      echo "The file ".  basename( $_FILES['user_file']['name']). 
      " has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
  }
?>

3 个答案:

答案 0 :(得分:1)

此行有问题move_user_file($_FILES['user_file']['tmp_name'], $path)

php的bool move_uploaded_file ( string $filename , string $destination )将上传的文件移动到所需的位置。 它是php API中的内置函数

您的代码应更改为

move_uploaded_file($_FILES['user_file']['tmp_name'], $path)

为了让它发挥作用。

我认为你的误解来自你的命名。以前,您的字段名称为uploaded_file,函数名称为move_uploaded_file()。因此,您必须认为,当您的字段名称为user_file时,您应该在php中调用move_user_file()。那是一种创造性思维......:D

“uploaded_file”是修复或硬编码的值吗? 嗯,您需要阅读给定的链接。

答案 1 :(得分:1)

您正在将核心函数调用更改为未定义函数或用户定义函数。

如果你已经定义了一个函数move_user_file(),那就确定了。

但是,如果您期望核心PHP内置函数,则没有函数move_user_file()

这条线似乎有问题:

if(move_user_file($_FILES['user_file']['tmp_name'], $path)) {

应该是:

if(move_uploaded_file($_FILES['user_file']['tmp_name'], $path)) {

您最终会调用未定义的函数move_user_file()

所需的功能是:move_uploaded_file()

答案 2 :(得分:1)

它不是move_user_file,它的move_uploaded_file。下次,学习如何正确使用编辑器的查找和替换; o)