Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Html文件保存-如何克服GET的2K限制。(注意:POST不起作用)_Javascript_Php_Html_Save - Fatal编程技术网

Javascript Html文件保存-如何克服GET的2K限制。(注意:POST不起作用)

Javascript Html文件保存-如何克服GET的2K限制。(注意:POST不起作用),javascript,php,html,save,Javascript,Php,Html,Save,我正在将一个用javascript构建的文件保存到本地internet下载目录 这项工作: javascript var filename = "mysave.txt" var contents = "xyz"; document.location = "htmlsave.php?filename=" + filename + "&contents=" + contents; htmlsave.php: if(!isset($_GET)) { exit(0); } $filen

我正在将一个用javascript构建的文件保存到本地internet下载目录

这项工作:

javascript

var filename = "mysave.txt"
var contents = "xyz";
document.location = "htmlsave.php?filename=" + filename + "&contents=" + contents;
htmlsave.php:

if(!isset($_GET)) {
    exit(0);
}
$filename = $_GET['filename'];
$contents = $_GET['contents'];

header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false); // required for certain browsers
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . $filename . "\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . strlen($contents));
header("Connection: close");
echo $contents;
这并不是:

javascript:

var i;
var filename = "mysave.txt"
var contents = "";
for(i=0, contents = "";i<10000;i++){
    contents += "x";
}
document.location = "htmlsave.php?filename=" + filename + "&contents=" + contents;
var filename = "mysave.txt"
var contents = "";
for(i=0, contents = "";i<10000;i++){
    contents += "x";
}
dataARR = {
    filename: filename,
    contents: contents
};
var dataJSON = JSON.stringify(dataARR);
$.ajax({
    type: "POST", // This for array
    url: "htmlsave.php",
    async: true,
    cache: false,
    crossDomain: false, // This needs to be true for other people
    data: { myJson: dataJSON },

    success: function (data) {
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
    }
});
显然,你需要使用POST,但是如何使用POST呢?如何使用POST数据执行“document.location=”位?你不能做一篇ajax文章(见下文),我已经试过了,但它不起作用

失败的POST方法:

javascript:

var i;
var filename = "mysave.txt"
var contents = "";
for(i=0, contents = "";i<10000;i++){
    contents += "x";
}
document.location = "htmlsave.php?filename=" + filename + "&contents=" + contents;
var filename = "mysave.txt"
var contents = "";
for(i=0, contents = "";i<10000;i++){
    contents += "x";
}
dataARR = {
    filename: filename,
    contents: contents
};
var dataJSON = JSON.stringify(dataARR);
$.ajax({
    type: "POST", // This for array
    url: "htmlsave.php",
    async: true,
    cache: false,
    crossDomain: false, // This needs to be true for other people
    data: { myJson: dataJSON },

    success: function (data) {
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
    }
});

那么如何保存大于2K的文件呢?

php
不需要创建,提示用户保存在
javascript
创建的文件。您可以使用
元素,将
下载
属性设置为
文件名
href
设置为包含文件数据的
Blob的
对象URL
,以启动提示用户保存文件

如果你想使用
php
,你可以使用
php://input
文件获取内容()
echo
POST
ed
Blob
文件
对象

vari;
var filename=“mysave.txt”
var contents=“”;

对于(i=0,contents=“”;我不确定您想要实现什么?我想将一个javascript生成的文件(大于2K)保存到客户端的internet下载目录。您可以不使用
php
来实现这一点。这看起来不错,但它将我引向应用商店。首先,它会问,“您想允许此网站在您的计算机上打开应用程序吗?”?然后它将我引导到应用程序商店,寻找可以读取blob的内容。@revend“这看起来不错,但它将我引导到应用程序商店。首先它会问,‘是否允许此网站在您的计算机上打开应用程序’?然后它将我引导到应用程序商店,寻找可以读取blob的内容。”有趣。您使用的是哪种浏览器?Internet Explorer 11是它要求应用商店的地方。Firefox根本不喜欢您的方法,它什么也不做。在Chrome上它工作得非常好。出于兴趣,您如何实现您的php方法?Firefox版本,用户可以在其中单击
。如果您
发布
Blob
File
object您应该能够使用
echo file\u get\u内容(“php://input“”