如何使用PHP或HTML下载文件?

如何使用PHP或HTML下载文件?,php,html,file,xhtml,download,Php,Html,File,Xhtml,Download,我正在做一个文件托管网站,大约95%的工作完成了,但有一个问题。当用户单击他们的文件下载时,该文件仅显示在浏览器中。我需要知道如何在while循环中定义$file变量以供下载。我需要使其可下载的变量被星号(*)包围 循环: $directory='uploads/'$_会话['user']./'; 如果($handle=opendir($directory)){ echo“您的文件列在下面”; 而($file=readdir($handle)){ 如果($file!='.&&$file!='..

我正在做一个文件托管网站,大约95%的工作完成了,但有一个问题。当用户单击他们的文件下载时,该文件仅显示在浏览器中。我需要知道如何在
while
循环中定义
$file
变量以供下载。我需要使其可下载的变量被星号(*)包围

循环:

$directory='uploads/'$_会话['user']./';
如果($handle=opendir($directory)){
echo“您的文件列在下面”;
而($file=readdir($handle)){
如果($file!='.&&$file!='..')){
回显'.*$file*'
'; } } }
通常每个非文本文件都会自动下载。对于文本文件,需要在脚本开头指定标题:

header("Content-Disposition: attachment; filename=".$file);

问题是标题,请查看链接以了解更多信息:


您需要将用户重定向到第二个脚本来处理请求:

下载.php?file=somepath/somefile.ext

<?php
$file_url = $_GET['file'];
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url);
?>

您的链接将是:

echo '<a href="download.php?file='.$directory.'/'.$file.'">' . $file.'<br>';
echo“”$文件“
”;
这将在onclick上执行,带有确认警报框

<?php

$directory = 'uploads/' . $_SESSION['user'] . '/';

if(isset($_REQUEST['DelFile'])) {
    $DeleteFile = $_REQUEST['DelFile'];
    if(file_exists($directory.$DeleteFile)) {
        @unlink($directory.$DeleteFile);
        header("location:SamePageURL.php?msg=1");
    } else header("location:SamePageURL.php?msg=2");
}

if ($handle = opendir($directory)) {
echo '<h3>Your files are listed below</h3>';    
    while ($file = readdir($handle)) {
        if ($file != '.' && $file != '..') {
            echo '<a target="_blank" href="'.$directory.'/'.$file.'">' . $file.' <a href="javascript:deletedata('.$file.')>Delete</a> <br>';  
        }
    }
}

if(isset($_REQUEST['msg'])) {
    $Message = $_REQUEST['msg'];
    if($Message == 1) echo "File deleted sucessfully";
    else if($Message == 1) echo "File not found";
}
?>
<script type="text/javascript">function deletedata(FileName){if(window.confirm("Wish to Delete (Press OK) or Cancel"))  window.location="SamePageURL.php?DelFile="+FileName;}</script>

函数deletedata(FileName){if(window.confirm(“希望删除(按OK)或取消”))window.location=“SamePageURL.php?DelFile=“+FileName;”

您可以共享文件类型吗?文件类型会有所不同,因为它是一个文件托管服务。如果是,请忘记这一点,尝试使用标题标记并指定文件名。这是有效的,我将它与xml一起使用,这样我就可以下载它们了,它也有效了。你能提供一个例子吗?我是PHPWell的新手,您需要下载的文件名为“file.jpg”。您只需在脚本的开头指定以下行:
标题(“内容处置:附件;文件名=“file.jpg”);
Ofc您必须通过变量创建一个动态文件名,但我不知道您的代码,也不能给您太多建议。我应该把第一部分放在哪里?在第二个文件download.phpSo中,然后只
include()
download.php?不!您需要将两个文件分开,在第一个文件中,您的链接将指向download.php?file=…您能提供一个示例吗?请确保将javascript放在页面的标题标记中。
<?php

$directory = 'uploads/' . $_SESSION['user'] . '/';

if(isset($_REQUEST['DelFile'])) {
    $DeleteFile = $_REQUEST['DelFile'];
    if(file_exists($directory.$DeleteFile)) {
        @unlink($directory.$DeleteFile);
        header("location:SamePageURL.php?msg=1");
    } else header("location:SamePageURL.php?msg=2");
}

if ($handle = opendir($directory)) {
echo '<h3>Your files are listed below</h3>';    
    while ($file = readdir($handle)) {
        if ($file != '.' && $file != '..') {
            echo '<a target="_blank" href="'.$directory.'/'.$file.'">' . $file.' <a href="javascript:deletedata('.$file.')>Delete</a> <br>';  
        }
    }
}

if(isset($_REQUEST['msg'])) {
    $Message = $_REQUEST['msg'];
    if($Message == 1) echo "File deleted sucessfully";
    else if($Message == 1) echo "File not found";
}
?>
<script type="text/javascript">function deletedata(FileName){if(window.confirm("Wish to Delete (Press OK) or Cancel"))  window.location="SamePageURL.php?DelFile="+FileName;}</script>