在浏览器中打开CSV文件而不是下载HTML

6

请问是否有一种方法可以在浏览器中打开csv文件而不是下载?

我的代码:

<a href="Myfile.csv">Open</a>

可能是重复的问题 在php中,csv文件不会被下载而是在浏览器中打开 - Rohan Khude
不,这不是我需要的HTML。 - SMH
1
你想让浏览器显示你的CSV文件吗?那为什么不将它作为文本发送呢? - Brad
在 PHP 中添加以下代码行:header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="file_name.csv"'); - Rohan Khude
3个回答

3
你需要添加以下标头。
header ('Content-Type: text/csv');

3
header ('Content-Type: text/csv');

或者

设置 iframe 并将您的 CSV 文件 URL 放入其中。


header('Content-Disposition: attachment; filename="put_your_preferred_file_name_here.csv"'); - 将强制下载CSV类型文件。 - Naga
你说得对。我已经更新了我的答案。 @NagarajanPerumal:也可以查看这个。那是什么? - Virb

1
使用这样的代码:<a href="Myfile.csv">打开</a>,你实际上并没有进行任何下载。但是,如果客户端浏览器没有能力读取/呈现文件(在本例中为 .csv 文件),它将强制用户下载该文件。要显式地强制下载,您必须设置header以告诉浏览器如何处理有关文件的请求。考虑这个过于简化的脚本:
<?php   // NOTICE THAT THERE IS NO WHITE-SPACE OR OUTPUT BEFORE <?php
        // AND ALSO; NO "echo" STATEMENT AT ALL BEFORE THE if(isset()){} BLOCK.

        if(isset($_GET['d'])){
            $file = htmlspecialchars(trim($_GET['d']));
            processDownload($file);
        }

        function processDownload($fileName) {
            if($fileName){
                $dldFile    = $fileName;
                if(file_exists($fileName)){
                    $size       = @filesize($fileName);
                    header('Content-Description: File Transfer');
                    header('Content-Type: application/octet-stream');
                    header('Content-Disposition: attachment; filename=' . $fileName);
                    header('Content-Transfer-Encoding: binary');
                    header('Connection: Keep-Alive');
                    header('Expires: 0');
                    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                    header('Pragma: public');
                    header('Content-Length: ' . $size);
                    return TRUE;
                }
            }
            return FALSE;
        }

    ?>


    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Download Example</title>
        </head>
        <body>
            <div class="container">
                <div class="col-md-12">
                    <!-- Myfile.csv IS IN THE SAME DIRECTORY AS THIS FILE: index.php -->
                    <!-- OTHERWISE; SET THE PATH TO THE CSV FILE AS VALUE OF d -->
                    <!-- NOTICE THAT THE LINK TO DOWNLOAD HERE IS THE SAME URL -->
                    <!-- WITH A QUERY PARAMETER ?d=Myfile.csv APPENDED TO IT.-->
                    <a href="index.php?d=Myfile.csv">Download CSV</a>
                </div>
            </div>
        </body>
    </html>

希望这能给你提供一些线索,以便你可以用自己的方式处理它。祝好运,干杯!;-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接