【问题标题】:Getting the file path of an uploaded file获取上传文件的文件路径
【发布时间】:2018-12-11 08:57:06
【问题描述】:

我目前正在做一个 PHP 项目,需要我将数据库中所有导入的 Excel 记录下来。

我能够从$_FILES 全局变量中获取tmp_name,但无法获取确切的文件路径。

这是我的代码 sn-p。

index.php

<form role="form" method="post" action="post_data.php" enctype="multipart/form-data">
    <input type="file" name="file" required>
    <button>Submit</button>
</form>

post_data.php

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        //var_dump($_FILES['file']);
        //var_dump($_FILES['file']['name']); #gets the file name
        var_dump($_FILES['file']['tmp_name']); #gets the temp file path and name
    }
?>

任何帮助将不胜感激。如果这个问题有任何可用的解决方案,我也可以使用 javascript。谢谢

【问题讨论】:

  • 使用move_uploaded_fileDOC

标签: javascript php file file-upload


【解决方案1】:

你不会得到文件路径。 PHP 中的文件上传的工作原理是,当您上传文件时,它将被上传到一个临时位置,然后您的表单将被发布。临时位置的路径将在$_FILES 数组中的tmp_name 选项中提供。

通过使用move_uploaded_file 函数,该文件将从临时位置移动到您选择的位置。但您必须提供要将文件从临时位置移动到的位置(包括文件名)。

因此,如果您正在寻找要从中移动文件的路径,那么它将出现在 tmp_name 中。

希望这会有所帮助。

【讨论】:

  • 实际上,如果我没有找到其他解决方案来获取上传文件的确切文件路径,这是我最后的选择。我真的希望得到确切的文件路径,但我想我可以使用这个。 :)
【解决方案2】:
<?php
//variable containing path of Server's folder where you want to upload your file 
$path;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    //var_dump($_FILES['file']);
    //var_dump($_FILES['file']['name']); #gets the file name
    var_dump($_FILES['file']['tmp_name']); #gets the temp file path and name
    if (move_uploaded_file($_FILES['file']['tmp_name'], $path . DS . $_FILES['file']['name'])) {
        //file uploaded successfully
        //your file is uploaded at $path . DS . $_FILES['file']
   }
   else {
        //error in uploading file
  }
}
?>

【讨论】:

    【解决方案3】:

    $image=$_FILES['文件'];
    $base=$_SERVER['DOCUMENT_ROOT']; $filename=$_FILES['file']['name']; $path=$base."/trial/Uploads/Original_folder/signature/".$filename.""; if(file_put_contents($path,$image)!=false) { 回声$路径; }

    【讨论】:

    • 已经试过了,但它只会给你临时文件的文件路径
    • 哦,让我检查一下..:)
    • $base=$_SERVER['DOCUMENT_ROOT']; $filename=$_FILES['file']['name']; $path=$base."/trial/Uploads/Original_folder/signature/".$filename.""; if(file_put_contents($path,base64_decode($image))!=false) { echo $path;这可能适用于所有服务器,您将在 $path 变量中获得完整路径
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多