【问题标题】:How to save an uploaded file on localhost?如何在本地主机上保存上传的文件?
【发布时间】:2012-01-22 14:57:35
【问题描述】:

我一直在使用从 HTML5/JS 上传图像文件并使用 PHP 脚本将其保存在 localhost(/var/www/) 中,但我无法保存它。当 _FILES 对象中存在对象时,函数 move_uploaded_file 始终返回 false。我是php新手:

  $target = "upload/";
  if(!empty($_FILES))
  {
     if(move_uploaded_file($_FILES['image_file']['tmp_name'], $target)) 
     {
     echo "The file ". basename( $_FILES['image_file']['name']). " has been uploaded...";
     } 
     else {
     echo "Sorry, there was a problem uploading your file. {$error}";
     }
  }
  else
  {
    echo "_files is empty";
  }

【问题讨论】:

  • 开启错误报告!
  • 问题出在 move_uploaded_file 的第二个参数中 - 请参阅我的答案
  • 可以阅读 move_uploaded_file 上的文档... :)
  • @Corbin:是的,corbin,我已经阅读了它的文档,我想也许我无法在 JS 文件中发出正确的 HTTP 请求,但它是正确的。我传递给它的参数可能有一些错误
  • 上传文件夹所在的位置以及运行上传代码的位置?

标签: php html file-upload localhost


【解决方案1】:

试试

move_uploaded_file($_FILES['image_file']['tmp_name'], $target.$_FILES['image_file']['name'])

因为你需要指定文件名,而不仅仅是目录。

参见PHP documentation的示例

<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
?>

【讨论】:

  • 感谢您的回答。我希望问题应该已经解决但它仍然存在,我已根据您的回答更改了我的代码,但我无法在上传文件夹中看到该文件。还有什么建议吗??
  • 改了代码,看看现在能不能用(tmp_name改为name)
  • 还是一样,当我通过 _FILES['image_file']['name'] 打印文件的名称或大小时,它显示了正确的名称,这意味着我在我的 php 中获取文件对象页面。
  • 当我使用上面的文档代码然后在循环内回显一些消息时,它没有显示,这意味着循环甚至没有迭代一次。任何更多的帮助plz
【解决方案2】:

试试这个

if(is_uploaded_file($_FILES['image_file']['tmp_name'])) 
     {
      move_uploaded_file($_FILES['image_file']['tmp_name'], $target.$_FILES['image_file']['name']);
     echo "The file ". basename( $_FILES['image_file']['name']). " has been uploaded...";
     }

【讨论】:

    猜你喜欢
    • 2014-03-13
    • 2019-10-31
    • 2014-01-04
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2013-02-01
    相关资源
    最近更新 更多