【问题标题】:PHP forced download add 2 lines in the begining of documentPHP强制下载在文档开头添加2行
【发布时间】:2015-03-03 15:33:37
【问题描述】:

我想从 php.ini 下载生成的文件。它可以工作,但它在文件的开头添加了 2 个空行。我尝试通过winscp下载文件并比较它们,通过php下载的这个文件在标题中有2个空行。我被这个错误迷失了两天,我无法解决这个问题。请你帮助我好吗 ? :)

谢谢

<?php
include 'connect.php';
function trsgen($mid=null)
{
if(isset($mid) && $mid!=null)
    {
    include 'connect_oo.php';
    $query="My query;";
    $result=$conn->query($query);
    $File=$mid . '.trs';
    $myfile = fopen($File, "w");
    $i=1;
    if($result->num_rows > 0)
        {
        while($row = $result->fetch_assoc())
                {
                if(isset($i) && $i==1)
                {
                $nameqry="another query;";
                $nameresult=$conn->query($nameqry);
                if($nameresult->num_rows == 1)
                {
                $name = $nameresult->fetch_assoc();
                $medianame=$name["media_name"];
                }
                else
                {
                $medianame=null;
                }
                $timeqry="SELECT distinct etime FROM subtitles where media_id=$mid order by stime DESC LIMIT 1;";
                $timeresult=$conn->query($timeqry);
                if($timeresult->num_rows == 1)
                {
                $time = $timeresult->fetch_assoc();
                $endtime=$time["etime"];
                }
                else
                {
                $endtime='1.0';
                }
                $hla1='<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
                $hla2='<!DOCTYPE Trans SYSTEM "trans-14.dtd">'.PHP_EOL;
                $hla3='<Trans scribe="tommy" audio_filename="'.$medianame.'" version="1" version_date="150302">'.PHP_EOL;
                $hla4='<Episode>'.PHP_EOL;
                $hla5='<Section type="report" startTime="0" endTime="'.$endtime.'">'.PHP_EOL;
                $hla6='<Turn startTime="0" endTime="'.$endtime.'">'.PHP_EOL;
                fwrite($myfile, $hla1);
                fwrite($myfile, $hla2);
                fwrite($myfile, $hla3);
                fwrite($myfile, $hla4);
                fwrite($myfile, $hla5);
                fwrite($myfile, $hla6);
                }
                $stime='<Sync time="'.$row["stime"].'"/>'.PHP_EOL;
                $text=$row["text"].PHP_EOL;
                $etime='<Sync time="'.$row["etime"].'"/>'.PHP_EOL;
                fwrite($myfile, $stime);
                fwrite($myfile, $text);
                fwrite($myfile, $etime);
                if($result->num_rows == $i)
                {
                $tail1='</Turn>'.PHP_EOL;
                $tail2='</Section>'.PHP_EOL;
                $tail3='</Episode>'.PHP_EOL;
                $tail4='</Trans> '.PHP_EOL;
                fwrite($myfile, $tail1);
                fwrite($myfile, $tail2);
                fwrite($myfile, $tail3);
                fwrite($myfile, $tail4);
                }
                $i++;
                }
        fclose($myfile);
        $conn->close();
        $file = __DIR__ . '/'.$mid.'.trs' ;
        header('Content-disposition: attachment; filename='.$File.'');
        header('Content-type: application/trs');
        header("Content-length: ".filesize($file));
        readfile($file);
        unlink($File);
        }
    }
}
?>
<?php
if(isset($_POST["mid"]) && !empty($_POST["mid"]))
{trsgen($_POST["mid"]);}
?>

<form action="" method="POST">
<select name="mid">
<?php
$query1="SELECT * FROM media where media_disabled!=1 ORDER BY mid DESC;";
$result1=$conn->query($query1);
if($result1->num_rows > 0)
        {
        while($row1 = $result1->fetch_assoc())
                {       
                echo '<option value="'.$row1["mid"].'">'.$row1["mid"].'-'.$row1["media_name"].'</option>';
                }
        }
$conn->close();
?>
<input type="submit" value="Generuj trs subor"></input>
</select>
</form>

【问题讨论】:

    标签: php download


    【解决方案1】:

    在 PHP 中,您可以尝试对空行进行正则表达式替换。我会确保您的程序每次/每次下载文件时都有 2 个空白行。

    How do I remove blank lines from text in PHP?

    【讨论】:

    【解决方案2】:

    我自己想出来的。

    我已经创建了单独的文件,只是为了下载文件 download.php。

    在主 php 中:

    ...
    ...
    fclose($myfile);
    $conn->close();
    header("Location: http://sub.radio9.sk/tmp/trsgen/download?mid=$mid");
    }
    

    在download.php中

    <?php
    if(isset($_GET["mid"]) && !empty($_GET["mid"]))
        {
            $mid=$_GET["mid"];
            $file=$mid.'.trs';
            header('Content-disposition: attachment; filename='.$file.'');
            header('Content-type: application/download');
            header("Content-length: ".filesize($file));
            readfile($file);
            unlink($file);
        }
    ?>
    

    然后两个空行消失了。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多