通过PHP格式下载文件


Download file by form PHP

我正试图通过表单PHP来查找json数据。文件正在下载,但dsnt获取了我定义的名称,并且在文件中只打印了我json数据中的两个字符。

里面的文件看起来像:

[{

当json数据出现时:

〔{"大小":〔16,16〕}〕

他是代码:

var dataAsText = JSON.stringify(data); 
var filename=$("#menu-save-text").val();
var _content = dataAsText;
jQuery('<form action="download.php" method="POST"><input type="hidden" name="filename" value="'+filename +'" /><input type="hidden" name="content" value="'+_content+'" /></form>').appendTo('body').submit().remove();

PHP:

<?
            $filename=$POST["filename"];
            header("Content-type: text/plain"); 
            header("Content-Disposition: attachment; filename=".$filename.""); 
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Cache-Control: private",false);
            echo $_POST["content"];        
    ?>

下载的文件名为download.php

您正遭受HTML注入漏洞的困扰。JSON中的"正在破坏您的HTML:

例如,您构建的html如下所示:

[..snip..]<input type="hidden" name="content" value="[{"SIZE":[16,16]}]" />[..snip..]

浏览器将解析为:

input:
  value="[}"         // proper attribute
  size":[16,etc...  // unknown/illegal html attribute

换句话说,您需要引用JSON以用于html表单属性,例如将所有"更改为&quot;。使用适当的dom方法创建或构建HTML,并使用jquery通过$(...).val(json_goes_here)类型操作设置内容输入的值。