【问题标题】:Cannot find file path (invalid url)找不到文件路径(无效的 url)
【发布时间】:2025-11-22 13:15:01
【问题描述】:

我找不到文件路径。我有一个可以插入文件或图像的表单。

以下代码显示文件或图像的保存方式

    if($_FILES["lampiran"]["name"][$i] != "")
    {
        $my_folder = "./files";
        $location = $my_folder.'/'.$pname;

        $imageFileType = pathinfo($tname,PATHINFO_EXTENSION);

        move_uploaded_file($tname,$location);

        $query2 = "INSERT into list_lampiran (id_aduan, folder, lampiran, nama_asal, type, size, time_create) VALUES ('$id_aduan', '$my_folder', '$location', '$pname', '$file_type', '$file_size', '$time_create')";

    mysqli_query($con, $query2);
    $id_lampiran=mysqli_insert_id($con);

        if($query2){

            $myfile_rename = $id_lampiran.'_'.$pname;  

            rename($location, './files/'.$myfile_rename); 

            $query3 ="UPDATE list_lampiran SET lampiran = '$myfile_rename' WHERE id = '$id_lampiran'";      

            mysqli_query($con,$query3);

        }

    }

然后文件或图像将通过电子邮件发送并显示为链接。但链接的网址无效

在电子邮件中显示文件或图像的代码


     if(mysqli_num_rows($resultlampiran) > 0){

      $rowlampiran = mysqli_fetch_array($resultlampiran, 
                     MYSQLI_ASSOC);
       $folder_name = $rowlampiran['folder'];
       $lampiran = $rowlampiran['lampiran'];
       $lampiran1 = $folder_name.'/'.$lampiran;
       $nama_asal = $rowlampiran['nama_asal'];
       $file = "<ul><li><a href='".$lampiran1."'>".$nama_asal."</a></li></ul>"; }

Redirect notice

【问题讨论】:

    标签: php html href


    【解决方案1】:

    您没有在文件链接中包含您网站的 URL。您需要更新电子邮件模板中的文件路径或:

    $website = "https://example.com/";
    $file = "<ul><li><a href='".$website.$lampiran1."'>".$nama_asal."</a></li</ul>";
    

    你很高兴 :)

    此外,您在编写代码时并不关心应用程序的安全性。任何人都可以轻松上传后门或任何其他 PHP 脚本并销毁服务器上的所有数据和文件。你必须 验证文件扩展名,然后保存到您的数据库

    例子:

    $validExt = array("jpg", "png", "pdf", "txt"); // valid extensions that should only be allowed.
    
    // and then check if upload file's extension matches in our valid list
    if(in_array(strtolower($imageFileType), $validExt) === false) {
    // some other file extension found, show error message
    } else {
    // upload your file here and save to database
    }
    

    【讨论】:

      【解决方案2】:

      这是你的文件地址

      $location = "www.sitename.com/". $my_folder.'/'.$pname;
      echo $location;
      

      【讨论】:

      • 这会导致文件上传错误。由于 move_uploaded_file() 函数需要一个相对或绝对路径,而不是带有域名的路径:(
      • 不,他的代码没有问题。他想知道上传后他的文件到底存储在哪里,所以我分享了上传文件的位置。他可以通过提供域名、文件夹名和文件名来访问他的文件。
      • 嗯,没关系。这种误解是由于您的答复没有解释。 :)
      最近更新 更多