如何在表单中保留上传护理图像


How to keep Uploadcare image in forms?

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

有时用户必须在表单中向后移动才能修复内容 - 不正确的电子邮件等。我想让所选的上传文件保留在该表单中。

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

的问题:我是否可以将 POST 变量与 Uploadcare 输入按钮一起使用,使其"记住"并重新加载用户之前上传的所选图片?

我当前的代码。

<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输入小部件有自己的做事方式,因此查询。

正如文档所说:

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

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

因此,您的第二个代码段应该可以正常工作。

您可能还想知道通过JS设置小部件值的方法:

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

排序了这个。它可以通过值来完成。伟大!

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

您可以使用

$_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