Php 如何通过表单更新服务器上的图像并在提交后显示?
我有一个带有文本输入的表单,允许用户插入图像的URL并提交表单以将图像上载到服务器。因此,图像被转换为PNG,用散列重命名并保存在服务器dirPhp 如何通过表单更新服务器上的图像并在提交后显示?,php,Php,我有一个带有文本输入的表单,允许用户插入图像的URL并提交表单以将图像上载到服务器。因此,图像被转换为PNG,用散列重命名并保存在服务器dirimages/ 这是要上传的代码: if (isset($_POST["cover"])) { imagepng(imagecreatefromstring(file_get_contents($_POST["cover"])), "images/".$hash.".png"); } 这样就可以了,问题是当用户试图从一个新的U
images/
这是要上传的代码:
if (isset($_POST["cover"])) {
imagepng(imagecreatefromstring(file_get_contents($_POST["cover"])), "images/".$hash.".png");
}
这样就可以了,问题是当用户试图从一个新的URL更新图像时
用于更新图像的表单具有服务器上实际转换和散列图像的值的输入。如果用户修改输入URL并提交更新表单,它将覆盖服务器上的图像
现在我有缓存问题。如何在提交表单后显示更新的图像而不必清理浏览器缓存
详细信息页面:index.php?page=details
用户点击更新,更新页面被加载index.php?page=edit
用户提交表单,插入的数据被保存并加载回detailsindex.php?page=details
,其中显示有问题的图像。只需将?
附加到src
属性的末尾,它将生成一个时间戳,希望,使浏览器再次请求图像并忽略缓存
您也可以查看.htaccess,定义一个filematch指令,该指令发送头以强制浏览器完全不缓存
<FilesMatch "\.(png|jpg)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>
FileTag无
标题未设置ETag
标题集缓存控制“最大年龄=0,无缓存,无存储,必须重新验证”
标题集Pragma“无缓存”
标题集过期“1984年1月11日星期三05:00:00 GMT”
我希望答案是有帮助的。那么您也保留了新图像的哈希名称?@Pjack是的,名称必须保持完整。因为该散列附加到其他文件。图像如何显示在页面上?可能需要查看更多代码?提交表单后会发生什么?@Pjack请再次查看我的问题,看看是否有帮助。我仍在努力实现这一点。仅澄清url必须是images/“$hash.”.png?=“.time()
或images/“$hash.”.png?”=time()
?images/“$hash.”.png?”.time()
本例中的=运算符用作echo的简写。