使用POST在网页中包含动态图像?
题
我编写了一个CGI脚本,使用GET数据动态创建图像。要在我的网页中包含此图片,我使用以下代码:
<img src="image.py?text=xxxxxxxxxxxxxx">
问题是我希望将来<!>“; text <!>”;字段将变得很长,URL将变得太大。从谷歌搜索周围似乎没有固定的URL长度限制(即取决于浏览器,服务器,代理等)有没有更好的方法来做到这一点?
如果重要,我正在使用Django和Python,我不能使用任何客户端脚本(即JavaScript)。
干杯, 本
解决方案
将文本存储在某处(例如数据库),然后传递主键。
其他提示
这会给你一张图片作为POST的结果 - 你可能不喜欢它
- 将iFrame放在您想要图像和大小的位置,然后删除滚动条
- 将src设置为一个表单,其中隐藏的输入设置为您的帖子参数,操作设置为将生成图像的URL
-
使用JavaScript在iFrame HTML的body.onload中自动提交表单
然后,要么:
-
将内容类型集提供给图像并流式传输图像字节
或:
-
将帖子参数存储在某处并生成一个小ID
-
使用网址中的id使用img标记回发HTML - 在服务器上查找帖子参数
或:
-
生成带有嵌入图像的图像标记的页面
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参数中的文本来缓解此问题。
从下面的链接看起来好像你会好一段时间;)
如果你正在使用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 。