【问题标题】:How to keep Uploadcare image in forms?如何在表单中保留 Uploadcare 图像?
【发布时间】:2016-03-12 17:36:19
【问题描述】:

我有一个表格,我想用 PHP 进行验证。从Uploadcare 的小部件上传的海报是该表单的一部分。

有时用户必须在表单中返回以修复问题 - 不正确的电子邮件等。我希望选择的上传文件保留在该表单中。

这在单击后退按钮时有效,但我不能依赖它。我正在使用 PHP POST 变量来重新加载和重新填充表单。

我的问题:我可以使用带有 Uploadcare 输入按钮的 POST 变量使其“记住”并重新加载用户之前上传的所选图片吗?

我当前的代码。

<input type="hidden"
       role="uploadcare-uploader"
       data-preview-step="true"
       data images-only="true"
       name="adposter"
       style="display: inline-block;" />

是否可以这样做:

<input type="hidden"
       role="uploadcare-uploader"
       data-preview-step="true"
       data-images-only="true"
       name="adposter"
       style="display: inline-block;" 
       value="<?php print isset($_POST["adposter"]) ? htmlspecialchars($_POST["adposter"]) : ""; ?>"
/>

与其他领域一样吗?显然 Uploadcare 输入小部件有自己的处理方式,因此是查询。

【问题讨论】:

  • $_POST 变量用于接收浏览器发送的数据,您不能使用它来将变量传递给 HTML 模板。但是,您可以简单地将 PHP 中的变量设置为文件 id,然后将其用作 &lt;input type="hidden" ... value="&lt;?php echo empty($fileId) ? "" : $fileId ; ?&gt;" /&gt;

标签: php uploadcare


【解决方案1】:

作为documentation says

[role=uploadcare-uploader] 输入的值为空或带有文件 UUID 的 CDN 链接。

如果你在外部设置了 input 的值并触发了 DOM change 事件,它会反映在 widget 中。例如,将其设置为文件 UUID 或 CDN 链接将在小部件中显示该文件已上传。您可以在实时小部件上执行此操作,甚至可以在它实际加载之前执行此操作。

所以你的第二个 sn-p 应该可以正常工作。

您可能还想知道如何设置小部件的值via JS

var widget = uploadcare.Widget('[role=uploadcare-uploader]');
widget.value("https://ucarecdn.com/e8ebfe20-8c11-4a94-9b40-52ecad7d8d1a/billmurray.jpg");

【讨论】:

    【解决方案2】:

    对此进行了排序。它可以用价值来完成。太好了!

    https://uploadcare.com/documentation/widget/#input-value

    【讨论】:

      【解决方案3】:

      您可以使用$_POST 将变量从一种形式传递到另一种形式,就像您使用隐藏字段所描述的那样。但这不是很有效,当您将信息写回客户端时,他们可能会改变这一点。

      保存这些变量的更好方法是使用$_SESSION

      会话支持允许您在请求之间存储数据 $_SESSION 超全局数组。当访问者访问您的网站时,PHP 将自动检查(如果 session.auto_start 设置为 1)或开启 您的请求(通过 session_start() 显式)是否特定 会话 ID 已随请求一起发送。如果是这种情况,则 重新创建先前保存的环境。 http://php.net/manual/en/intro.session.php

      因此,在图片上传后,您将图片 ID 存储在 $_SESSION

      session_start();
      $_SESSION['imageid'] = 123456;
      

      然后,即使稍后形成,您也可以通过再次使用 $_SESSION 变量来访问 imageid:

      session_start();
      var_dump($_SESSION['imageid']);
      
      int 123456
      

      有关会话的更多信息,请参阅 php 文档:http://php.net/manual/en/book.session.php

      【讨论】:

      • 谢谢大家 - 我应该澄清一下 - 我的问题更多的是关于 Uploadcare 输入类型将如何接受 Value="xxxx"。例如,Uploadcare 从用户那里获取一个文件,并给它一个 id,比如 859510a2-b15b-4fb3-9b02-08c95685dffd。上传后,小部件通常会告诉用户他们上传的文件的名称及其文件大小 - 例如“image.gif, 33kb”。我的问题是我是否可以将 id - 859510a2-b15b-4fb3-9b02-08c95685dffd - 作为输入元素值提供回 html 表单,以及 u/c 小部件是否会接受。我已经接受了 Session 的事情:)
      猜你喜欢
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2018-01-28
      • 2019-07-04
      相关资源
      最近更新 更多