3

我有一个按钮。通过单击按钮,我想将网页上显示的一些数据导出到文件以供下载。

我这样做是这样的:我有一个export.php. 我将数据作为参数发送到 PHP 文件(另一个参数是文件名),PHP 服务器创建一个文件并写入数据,然后发送文件。代码就像:

$filename = $_GET['filename'] . '.csv';
$export = $_GET['export'];
$writer = fopen($filename, 'w') or die('cannot create');
fwrite($writer, $export . "\n");
fclose($writer);

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.basename($filename));
readfile($filename);
unlink($filename);

exit();

对于数据较短的情况,它可以正常工作。但是如果数据很长,由于数据是作为 URL 的一部分传递的,我会得到“Request-URI Too Large”错误。

有没有其他方法可以做到这一点?是否可以使用 JavaScript 直接写入数据?

4

3 回答 3

4

听起来您正在使用 GET 发送到 export.php,而您应该使用 POST。GET 限制为 2048 个字符,而 POST 则不受限制。

于 2012-07-19T21:59:10.320 回答
2

您需要将数据发布到服务器。将您的 FORM 标记中的 METHOD 更改为 POST(在您的 html 中而不是您的 php 代码中)。

每个浏览器都会限制查询字符串的大小/URL 的长度,并且该限制取决于浏览器。但是,您可以将大量数据发布到服务器。唯一的限制是用户的上行带宽和他们的耐心有多快。

于 2012-07-19T22:02:01.607 回答
1

不要将数据作为查询字符串传递,而是使用 javascript 创建一个 iframe 并构建一个表单,然后将其发布到 php 文件。

如果你使用 jquery 有一个很好的教程http://tutorialzine.com/2011/05/generating-files-javascript-php/

于 2012-07-19T22:03:56.330 回答