我编写了一个CGI脚本,使用GET数据动态创建图像。要在我的网页中包含此图片,我使用以下代码:

<img src="image.py?text=xxxxxxxxxxxxxx">

问题是我希望将来<!>“; text <!>”;字段将变得很长,URL将变得太大。从谷歌搜索周围似乎没有固定的URL长度限制(即取决于浏览器,服务器,代理等)有没有更好的方法来做到这一点?

如果重要,我正在使用Django和Python,我不能使用任何客户端脚本(即JavaScript)。

干杯, 本

有帮助吗?

解决方案

将文本存储在某处(例如数据库),然后传递主键。

其他提示

这会给你一张图片作为POST的结果 - 你可能不喜欢它

  1. 将iFrame放在您想要图像和大小的位置,然后删除滚动条
  2. 将src设置为一个表单,其中隐藏的输入设置为您的帖子参数,操作设置为将生成图像的URL
  3. 使用JavaScript在iFrame HTML的body.onload中自动提交表单

    然后,要么:

  4. 将内容类型集提供给图像并流式传输图像字节

    或:

  5. 将帖子参数存储在某处并生成一个小ID

  6. 使用网址中的id使用img标记回发HTML - 在服务器上查找帖子参数

    或:

  7. 生成带有嵌入图像的图像标记的页面

    http://danielmclaren.net/2008 / 03 /嵌入-的base64图像数据 - 到 - 一个的网页

汇总已经说过的内容,如何创建两个页面。使用text = xxxxxxx ...参数提交表单(假设为create_img.py)时,第一页发送POST请求。然后create_img.py获取text参数并使用它创建一个图像并将其(或文件系统引用)插入到db中,然后在呈现第二页时生成img标记,如<img src="render_img.py?row_id=0122">。此时,render_img.py只是查询给定图像的数据库。在创建映像之前,您可以检查它是否已经在数据库中,因此重用/回收具有相同文本参数的先前映像。

img使用GET。你必须提出另一种机制。如何在image.py中调用相同的功能并将文件保存为您在img标记中引用的临时文件?或者在渲染此img标记期间如何在db行中保存文本的值,并将row_id用作传递给image.py脚本的内容?

您可以通过压缩get参数中的文本来缓解此问题。

从下面的链接看起来好像你会好一段时间;)

http://www.boutell.com/newfaq/misc/urllength.html

如果你正在使用django,也许你可以通过模板标签来做到这一点吗?

类似的东西:

<img src="{% create_image "This is the text that will be displayed" %}">

create_image函数将使用虚拟/随机/生成的文件名创建图像,并返回路径。

这样可以避免对脚本进行GET或POST,并且图像将具有可管理的文件名。

我可以看到这种方法存在一些潜在问题,我只是把这个想法抛在那里;)

好的,我参加聚会有点晚了,但你可以混合使用MHTML(适用于IE7及以下版本)和数据URI方案(适用于所有其他现代浏览器)。它确实需要在客户端和服务器上进行一些工作,但最终可能最终得到

newimg.src = 'blah';

有关如何执行此操作的说明,请访问 http://gingerbbm.com/?p= 127

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top