【问题标题】:PHP Uploading file unsuccessfulPHP上传文件不成功
【发布时间】:2018-07-20 09:44:09
【问题描述】:

我正在尝试将文件上传到本地服务器,但一直不成功。

我所有的文件都在 /var/www/html/ 但是,我在 html 文件夹中创建了一个名为 uploads 的文件夹,并将其权限更改为 777(平均而言,我从搜索中获取的内容最适合我的需要)

这是我的代码: index.html

<!DOCTYPE html>
<html>
<body>
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>

上传.php

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES['fileToUpload']['name']);
echo "Target File: " . $target_file . "<br />";

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']).  " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}
?>

【问题讨论】:

  • 提示:查看您的输入名称和$_FILES 数组中的其他两个名称。非常仔细地看那些。您会找到自己的答案,并且会执行您的第一次调试操作。 ;-)
  • 撇开:很少有理由去777
  • @CD001 可能认为如果文件夹设置为 755 并且不起作用,那么 777“必须”起作用。
  • 为什么要使用隐藏字段来传递 MAX_FILE_SIZE ?
  • 目标路径在哪里

标签: php html file-upload


【解决方案1】:

您的输入文件是

&lt;input name="uploadedfile" type="file" /&gt;

所以把$_FILES['fileToUpload']['name']改成$_FILES['uploadedfile']['name']

$_FILES['uploadedfile']['name'] 必须具有文件字段的Name 属性的值

【讨论】:

  • 为回答干杯!我很感激
【解决方案2】:

你没有设置变量

$target_path

你的意思是但没有使用

$target_file

改为。

【讨论】:

  • 感谢您的回复!在那里有点尴尬。但是我仍然收到同样不成功的上传
  • 你错了。 OP 在$_FILES['uploadedfile']['name'] 中使用了错误的输入字段名称查看我的答案
【解决方案3】:

试试这个:

index.html

 <!DOCTYPE html>
 <html>
 <body>
 <form enctype="multipart/form-data" action="upload.php" method="POST">
 Choose a file to upload: <input name="uploadedfile" type="file" /><br />
 <input type="submit" value="Upload File" />
 </form>
 </body>
 </html>

上传.php

if(isset($_FILES["uploadedfile"]["type"]) && ($_FILES["uploadedfile"]["size"] < 5000000)){
      $sourcePath = $_FILES['uploadedfile']['tmp_name'];
      $file = $_FILES['uploadedfile']['name'];
      $targetPath = "/uploads/".$file;
      if(move_uploaded_file($sourcePath,$targetPath)){
      echo "The file: ".$_FILES['uploadedfile']['name']." has been uploaded";
   }else{
      echo "Looks like it failed.";
   }
}else{
   echo "You forgot to select a file, or the file size is too large.";
}

所以它的作用是检查文件是否存在并检查它是否小于 5MB。如果是这样,它会转到上传部分。

【讨论】:

  • 感谢您的回复,但它似乎不起作用。只是每次都失败,不管代码是什么
  • 你在运行什么样的服务器? @luna 游戏
  • @jasson-basset 感谢您的回复,我正在运行本地 apache 服务器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 2011-07-18
相关资源
最近更新 更多