【问题标题】:Including a dynamic image in a web page using POST?使用 POST 在网页中包含动态图像?
【发布时间】:2010-09-19 14:13:40
【问题描述】:

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

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

问题是我预计将来“文本”字段会变得很长,并且 URL 会变得太大。从谷歌搜索来看,似乎对 URL 长度没有固定限制(即取决于浏览器、服务器、代理等)。有没有更好的方法来做到这一点?

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

干杯, 本

【问题讨论】:

    标签: python html django cgi image


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        这会给你一个 POST 的结果图片——你可能不喜欢它

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

          然后,要么:

        4. 将内容类型集返回到图像并流式传输图像字节

          或:

        5. 将 post 参数存储在某处并生成一个小 id

        6. 使用 url 中的 id 使用 img 标签返回 HTML -- 在服务器上查找帖子参数

          或:

        7. 使用嵌入图像的图像标签生成页面

          http://danielmclaren.net/2008/03/embedding-base64-image-data-into-a-webpage

        【讨论】:

          【解决方案4】:

          把已经说过的放在一起,创建两个页面怎么样。第一个页面在表单提交时发送一个 POST 请求(可以说是 create_img.py),并带有 text=xxxxxxx... 参数。然后 create_img.py 获取文本参数并用它创建一个图像并将其(或文件系统引用)插入到数据库中,然后在渲染第二页时,生成像 &lt;img src="render_img.py?row_id=0122"&gt; 这样的 img 标签。此时,render_img.py 只是查询给定图像的数据库。在创建图像之前,您可以检查它是否已经在数据库中,因此使用相同的文本参数重用/回收以前的图像。

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              【解决方案6】:

              从下面的链接看来你会没事的;)

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

              【讨论】:

                【解决方案7】:

                如果你使用 django,也许你可以通过模板标签来代替?

                类似:

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

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

                这避免了必须 GET 或 POST 到脚本,并且图像将具有可管理的文件名。

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

                【讨论】:

                  【解决方案8】:

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

                  newimg.src = 'blah';
                  

                  有关如何执行此操作的文章位于http://gingerbbm.com/?p=127

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-09-25
                    • 2011-04-29
                    • 1970-01-01
                    • 2014-07-29
                    • 2013-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多