- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在从事一个项目,我在其中使用 Rgraph PHP 库实现了几个图形/图表。在我的脚本中,我对图表执行以下操作:
Draw()
方法绘制图形。canvas.toDataURL()
方法创建图像数据变量。$.post()
方法将此图像数据变量传递到服务器。此解决方案中的所有内容在我的本地主机上运行良好,但在开发服务器上,传递图像数据的 AJAX 请求返回 403 错误
。
我记录了客户端和服务器端的数据以确定问题所在。客户端日志记录确认传递的 imageData 变量看起来正确。但是,服务器端日志记录确认正在传递的 imageData 变量是导致问题的原因。
有一个very similar question posted last year about this ,但是他们无法确定其根本原因。谁能帮我指出解决这个问题的正确方向?
我认为这可能是数据编码问题,但如果是这种情况,为什么它在一台服务器上工作而不在另一台服务器上工作?
我的相关 Javascript:
radar.Set('chart.contextmenu', [
['Get PNG', RGraph.showPNG],
null,
['Cancel', function () {}]
]);
radar.Draw();
var imageData = radar.canvas.toDataURL("image/png");
console.log('imageData: ' + imageData);
console.log('filename: ' + 'tmpRadar<?php echo $us['UsersSurvey']['user_id']; ?>-<?php echo $survey['Survey']['id']; ?>.png');
$.post("/Surveys/save_chart", {
src : imageData,
filename: 'tmpRadar<?php echo $us['UsersSurvey']['user_id']; ?>-<?php echo $survey['Survey']['id']; ?>.png'
});
客户端日志记录:
imageData: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAOECAYAAACxbcj6AAAgAElEQ…AgQIAAgVECAqxR49YsAQIECBAgQIAAAQIECBAgQKCfwP8CXHJ+WDHVMbcAAAAASUVORK5CYII=
filename: tmpRadar19-1.png
POST http://website.com/Surveys/save_chart 403 (Forbidden)
AJAX 调用的 PHP 函数:
public function save_chart() {
if($this->request->is('ajax')) {
$this->log('request data: '.print_r($this->request->data, true));
$filename = $this->request->data['filename'];
$src = $this->request->data['src'];
$src = substr($src, strpos($src, ",") + 1);
$decoded = base64_decode($src);
$fp = fopen(WWW_ROOT.'files/graphs/'.$filename,'wb');
if(fwrite($fp, $decoded)) {
fclose($fp);
return json_encode(array('success' => '1'));
} else {
fclose($fp);
return json_encode(array('success' => '0'));
}
}
}
最佳答案
假设CORS这不是这里的问题(这听起来不像是因为它在您的本地主机上工作正常并且听起来像是您发布到您收到原始 GET 的同一域),这可能是 Apache 之间的配置错误在您的本地主机和开发箱上。鉴于问题仅出在您的 base 64 编码图像 POST 上,它可能太大,因此 apache 拒绝它。
根据 this SO post ,请尝试在您的 php.ini 中设置以下内容:
post_max_size=20M
upload_max_filesize=20M
或在 .htaccess/httpd.conf/virtualhost 中:
php_value post_max_size 20M
php_value upload_max_filesize=20M
请注意,在您发布 apache 错误日志之前,我无法确定这是否是原因。
关于javascript - jQuery AJAX 调用在传递 Rgraph 图像数据时返回 403 禁止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30065462/
我用它来清除图表: for (var i=0; i< document.getElementsByTagName('canvas').length; i++) { RGraph.Clear(docum
我在 Canvas 对象中创建了一个带有 labelsAbove 的 Hbar。然后我删除 Canvas 对象(实际上父对象更改innerHTML删除 Canvas )。当我创建一个新的 Canvas
我只是尝试使用 RGraph 生成图表,以便我可以开始使用 SQL 来操作图表。然而,我遇到的问题是它根本没有显示基本图表。有人知道我哪里出错了吗? Charts [No can
所以,我有一个像这样的图表: 我想要实现的是当我单击引用该行的键时隐藏该行及其标签。 我找到了this在文档上,我尝试这样做: $(line.canvas).on('click', function
我正在尝试在定义了 highlightStyle: 'halo', 和 tickmarksStyle: ['circle'] 的点中指定颜色。 图表: 如果这些点超过那条蓝线,我想将它们的颜色更改为红
我尝试根据用户给定的阈值设置不同的图形颜色。给出的示例建议您使用 RGraph.Reset(graph1); 重置图形,然后完全重新绘制图形: graph[graph1] =
RGraph.net 将归因链接附加回其网站。虽然它是根据 CC Attribution-NonCommercial 3.0 获得许可的,但可以通过其他方式进行归因,并且在每个图形上显示文本在某些设计
我正在使用 jit infovis javascript 组件 (thejit.org)。我有数百万个数据节点,需要 rGraph 按需加载/延迟加载数据,否则它永远不会呈现。我找不到任何文档。有谁知
我有一个带有一些 SVG SemiCircular RGraph 图表的 Web 应用程序。这些 SVG 图表的初始绘制进展顺利。我想用新值即时更新其中一些图表。我在答案( How do I redr
我有以下奇怪的问题。我有一个 HTML 页面,其中包含一些 RGraph 仪表,我想使用 Ajax 定期更新这些仪表。 相关代码如下: var update = function(){ $.a
I am using RGraph library for my assessment site. It is working well but canvas height is creating a
我正在尝试在我正在处理的报告页面上制作一个简单的饼图。我的客户在他们的所有系统中都使用 IE8。在我看来,RGraph 提供了最好的可用图形,也是我老板要求我使用的图形工具。所以说服我没有改变。 我也
我在将 Rgraph 与 PHP 和 MySQL 数据集成时遇到问题。我遵循了 Rgraph 网站的说明。 在 Rgraph 站点上,该示例使用数组数据,但我的案例不使用数组。我想显示有多少 pega
我正在从事一个项目,我在其中使用 Rgraph PHP 库实现了几个图形/图表。在我的脚本中,我对图表执行以下操作: 计算图形点并使用 Rgraph Draw() 方法绘制图形。 使用 canvas.
我是一名优秀的程序员,十分优秀!