Home Articles

获取上传文件的完整路径 - PHP

Asked
Viewed 3 times
12

我有一个表单(HTML,PHP),允许最终用户上传文件以使用上传文件中的记录(特别是.csv)更新数据库(MySQL) . 但是,在phpscript中,我只能获取文件名而不是指定文件的完整路径 . 由于这个原因,fopen()失败了 . 谁能告诉我如何才能找到完整的路径?

HTML代码:

<html>
<head>
</head>
<body>
<form method="POST" action="upload.php" enctype="multipart/form-data">
    <p>File to upload : <input type ="file" name = "UploadFileName"></p>
<input type = "submit" name = "Submit" value = "Press THIS to upload"> </form> </body> </html>

PHP脚本:

<?php
   .....
......
   $handle = fopen($_FILES["UploadFileName"]["name"], "r"); # fopen(test.csv) [function.fopen]: failed to open stream: No such file or directory
?>

5 Answers

  • 25

    使用以下代码,

    $handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r');
    
  • 3

    name 指的是 client-side 上的文件名 . 要获取 server-side 上的文件名(包括完整路径),您需要使用 tmp_name

    $handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r');
    
  • 3

    我写的是这样的:

    $filePath = realpath($_FILES["file"]["tmp_name"]);
    

    这给了我PHP中上传文件的完整路径 . 如果在文件下载中发现0字节问题,只需像这样修改此内容长度行

    header("Content-Length: ".filesize($filePath));
    

    其中$ filePath应该是文件的绝对路径,而不仅仅是文件句柄 .

  • 3

    我这样用......

    <?php
    $NameOriginal = $_FILES["UploadFileName"]['name'];
    $Typo_Image = $_FILES["UploadFileName"]['type'];
    $name_Temp = $_FILES["UploadFileName"]['tmp_name']; 
    ?>
    
  • 1
    $target='uploads/'.basename($_FILES['UploadFileName']['name']);
    
    if(move_uploaded_file($_FILES['UploadFileName']['tmp_name'],$target)) {
    
         //Insert into your db
    
         $fp = fopen($target, "r");
    }
    

Related