【问题标题】:PHP file not uploadingPHP文件未上传
【发布时间】:2011-10-14 07:14:39
【问题描述】:

我不经常使用 PHP,但我看不出这有什么问题。大约 15 分钟前,我有同样的代码在工作,但现在它刚刚停止工作。我没有改变任何东西,所以我有点困惑。

无论如何,这是一个表单,你应该提交截图,这是我的表单的代码,

<form method="post"
enctype="multipart/form-data">
<label for="file">Screenshot of them agreeing to terms:</label>
<input type="file" name="file" id="file" /> <br />
<input type="submit" name="submit" value="Submit" />
</form>

我不认为这有什么问题。这是处理所有这些的 PHP(我认为/希望)

 if(isset ($_POST['loanee'])) {
            if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    $name = md5_file(sys_get_temp_dir() . $_FILES['tmp_name']);
      move_uploaded_file(sys_get_temp_dir() . $_FILES["files"]['tmp_name'], "public_html/mc/images/{$name}.jpeg");
    }
  }

我没有得到任何回应,并且错误日志中没有显示任何错误,所以出了什么问题?

感谢您的帮助。

Loanee不是问题,因为我的sql数据库在图片“上传”后正在更新,我没有放整个表格,因为其中一些有一些我认为没有必要的信息,表格正如我之前所说,工作正常,对于一直告诉我贷款人未设置在表格中的每个人,我很抱歉。

【问题讨论】:

  • 您应该为上传的文件提供正确的文件扩展名。 .jpeg 对他们三个都不正确。
  • 表单中名称为 loanee 的元素在哪里应用 isset($_POST['loanee'])
  • 我认为您在最后一行代码中有另一个错字。您可以通过两种不同的方式访问 _FILES 变量。

标签: php file upload


【解决方案1】:

您不必使用sys_get_temp_dir()$_FILES["files"]['tmp_name'] 已经指向临时目录。

所以把你的代码改成这样:

$name = md5_file($_FILES["file"]['tmp_name']);
move_uploaded_file($_FILES["file"]['tmp_name'], "public_html/mc/images/{$name}.jpeg");

编辑:哦,你应该使用is_uploaded_file来检查文件是否已经上传。

【讨论】:

  • 我在第 46 行收到一条错误消息,指出文件名不能为空,这是第 46 行 $name = md5_file($_FILES['tmp_name']);
  • @Austin 哦,是的,您必须以与 move_uploaded_file 相同的方式引用它。例如。 $_FILES['files']['tmp_name']。将在我的回答中解决这个问题
  • 现在修复它.. $_FILES 数组的键应该与您的表单输入字段相同。所以在你的情况下它是“文件”
  • 现在我得到这两个错误,Warning: move_uploaded_file(public_html/mc/images/7485273b2147c49e10271596d2b1d764.jpeg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /public_html/mc/CreateLoan.php on line 46 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpWUwCoI' to 'public_html/mc/images/7485273b2147c49e10271596d2b1d764.jpeg' in /public_html/mc/CreateLoan.php on line 46
  • 你的路径错误。如果你的脚本位于public_html/mc,你的路径应该是相对的(例如,只是images/{$name}.jpeg),或者使用绝对路径。还要确保该目录对于 php 脚本是可写的(通常通过使其可由“web-process”用户写入)。
【解决方案2】:

我看不到$_POST['loanee'] 的设置位置,但需要设置。否则会跳过有趣的代码。

【讨论】:

  • 抱歉,正在设置中。那部分工作正常(上传图片后我正在更新sql数据库)之前应该说过。
  • Austin,它是同一个表格的一部分吗?如果它没有包含在同一个表单标签下,点击提交可能不会给你所有你想要的变量。
【解决方案3】:

在您的 php 脚本的第一行,您检查应该来自 HTML 表单的 loanee 变量,但您的表单中没有任何具有该名称的字段。

更具体:

if(isset ($_POST['loanee'])) {    // That line does not correspond to any input element into your form

要解决您的问题,请删除该语句控件或使用该名称在表单中添加一个新字段。

【讨论】:

  • 在表格里,我只是没有上传整个表格。我更新了我的第一篇文章。抱歉,我只是觉得没有必要填写整个表格。
  • 尝试禁用该语句控制以检查上传是否仍然有效。如果工作,那么您可以专注于该声明
猜你喜欢
  • 2012-06-04
  • 2016-03-28
  • 2019-09-05
  • 2014-11-16
  • 1970-01-01
  • 2012-09-23
  • 2014-11-10
  • 2014-03-11
  • 2019-02-06
相关资源
最近更新 更多