【问题标题】:Can I post an inline image using file field in a form我可以在表单中使用文件字段发布内联图像吗
【发布时间】:2010-12-14 12:57:58
【问题描述】:

我在 HTML 文档中加载了一个 IMG,我想使用表单中的“文件”字段上传它。表单在同一个文档中,所以我不应该有任何安全问题。

是否可以将图像上传到服务器?

我设法从硬盘驱动器中选择了一个文件来上传图像,但我不知道如何使用 HTML 文档中的 IMG。

【问题讨论】:

  • @Shakti 他已经做到了:javascript
  • 我很确定这可以使用canvas
  • 更多信息。我要归档的语言是Javascript。我必须将图像作为多部分上传。

标签: javascript file-upload


【解决方案1】:

使用 javascript,您可以从内联图像中获取“src”属性(如果 src 是相对引用,则附加到当前 url 位置)并将其作为隐藏字段发布到表单中。

然后,服务器端应用程序将从同一来源下载图像,使用 PHP 中的 curl 或 python 中的 urllib 之类的东西。

【讨论】:

  • 是的,如果 HTML5/Canvas 不是一个选项,这是一种方法。
  • 也许可以解决这个问题:修改 jqueryform.js 以上传画布而不是文件字段stackoverflow.com/questions/4440564/…
  • @Atlantidense:如果您可以完全控制客户端浏览器版本(例如在 Intranet 上)似乎是一个不错的解决方案。
【解决方案2】:

我没有这方面的实践经验,但似乎可以使用canvas.toDataURL。我不知道 IE 与 exCanvas 的兼容性。

请参阅this SO answer 以获得成功的解决方案。

【讨论】:

    【解决方案3】:

    不,这是不可能的,因为 HTML 表单只会从您的计算机上传文件。

    如果您可以在表单页面上显示图像,为什么不能在隐藏的表单字段中引用其 url 以便稍后访问该字段。

    因此,例如,您的图片将是 <img src="URL"/>,然后您可以在表单中插入一个类似于以下内容的字段:

    <input type="hidden" value="URL" name="my_image"/>
    

    提交表单后,您可以通过POSTGET 参数以PHP 或您使用的任何语言访问图像的URL。最好事先对图像的 URL 进行 URL 编码。

    【讨论】:

    • 这实际上可以使用canvas 对象
    • 我不确定细节,但使用canvas 不会是兼容大多数浏览器的解决方案。
    • @slhck 让 OP 决定他是否想要兼容。 :)
    • @slhck Canvas 相当广泛(除了 IE 之外的所有现代浏览器都支持它)但如果适用于 OP 的情况,你的想法也很好
    • 我需要支持的浏览器是Safari mobile,我假设使用canvas作为解决方案不会有任何问题。
    【解决方案4】:

    看到这个帖子Convert canvas to image and open in new window using ruby on rails and javascript

    它基本上发布原始图像数据,然后在服务器上对其进行解码并将其写入文件。我自己实现的,效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多