【问题标题】:How do I get the full local path of a file uploaded with $_FILES如何获取使用 $_FILES 上传的文件的完整本地路径
【发布时间】:2012-06-26 22:18:05
【问题描述】:

我通过文件输入上传了一个文件。如果我 print_r($_FILES),我可以获得几条信息,但它没有给我文件的完整本地路径(我的计算机上的路径,而不是服务器上的路径)。我怎么得到这个?

我需要这个来使用 CodeIgniter 中的 FTP 库。文档是here,关于如何使用它来上传文件。

如您所见,它需要完整的本地路径,尽管我不确定为什么。

【问题讨论】:

  • 我想使用 CI FTP 类而不是文件上传,因为它是一个更健壮的类并提供了构建文件管理器所需的工具。

标签: codeigniter file-upload


【解决方案1】:

由于文件上传路径是一个随服务器变化的变量,我建议你使用move_uploaded_file()函数:

$target = "uploads/myfile.something";
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target)) {
    // do something
}

这样,无论路径是什么,即使它发生变化,它也将始终有效。 target 可以是任何你想要的,它与正在执行脚本的当前文件夹相关。

【讨论】:

  • 不,我需要的是用户用来上传文件的计算机上的文件路径,而不是服务器上的路径。
  • 看起来 CI 不会从本地计算机上传文件。据我所知,它只会移动服务器上的文件。但陪审团还没到。
  • 对不起,我的误解。无法读取路径,因为这将是一个很大的安全问题,这就是为什么它是 JS 中的安全限制。但是,直到 IE8 和 FF3 才有可能,我认为这不是您需要的。
  • *** 在 PHP 中,它曾经、现在和将来都是不可能的,就像任何其他服务器端语言一样,当使用多部分表单数据将文件传递到服务器时,没有关于路径的信息已发送。
【解决方案2】:

我解决了这个问题。

public function upload($file, $folder) {
  $this->CI->ftp->upload($_FILES['file']['tmp_name'], '/public_html/rest/of/path/' . $_FILES['file']['name'], 'ascii', 0775);
 }  

文件正在上传,因此您可以使用$FILES['file']['tmp_name'] 访问它。这是来自一个班级,所以这就是我使用$this->CI 的原因。否则,我只会使用$this

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 2016-03-13
    • 1970-01-01
    • 2013-11-24
    • 2016-11-26
    • 1970-01-01
    • 2010-12-10
    • 2014-05-10
    • 1970-01-01
    相关资源
    最近更新 更多