php - 通过 wp_handle_upload 删除未放入上传文件夹的图像

标签 php wordpress image

我正在将图像保存到上传文件夹,但我正在使用 file_put_contents而不是 wp_handle_upload - 因为我得到的是 base64 格式的图像,而不是 $_FILES 中的文件。

图像和某些帖子数据被保存/更新,因为它们应该使用此功能:

  • wp_insert_attachment
  • wp_update_attachment_metadata

问题是当我想删除旧图像时(保存新图像时)。

wp_delete_attachment不会删除图像(虽然它似乎确实删除了数据库中的内容..)。我认为问题在于没有使用 wp_handle_upload。 (当我通过 upload btn 上传图片并使用 $_FILES 接收它,然后使用 wp_handle_upload 上传它时 - 删除作品)

有没有人知道在我的案例中删除图片的正确方法是什么? 也许我可以使用 wp_handle_upload 正确保存它,即使我在 base64 中有图像?

感谢您提供任何信息。

编辑: 我还尝试使用 wp_upload_bits 保存图像wp_delete_attachment 仍然没有用。

我检查的另一件事:the code wp_handle_upload 函数位于 wp-admin/includes/file.php :我没有看到一种简单的方法来修改或复制现有函数并添加一个自定义函数来接受 base64 图像而不是 $_FILES 中的文件。也许有人有“base64 到 $_FILES”的解决方法?

最佳答案

正如@KamilP 所说,WP 在wp_postswp_postmeta 表中插入记录。

因此,首先您必须将 base64 图像保存在临时目录中,然后通过使用它的相对路径和其他数据,您可以使用 wp_insert_attachment 在数据库中插入记录,链接包含适当的例子。 此函数会将图像添加到媒体库。

要生成更多缩略图,您可以使用 wp_generate_attachment_metadata功能。此函数还将使用图像和缩略图的所有详细信息更新 wp_postmeta 表。

在此之后您可以使用 wp_delete_attachment还具有从目录和数据库中删除图像的功能。

另一种解决方案:

  • 使用 this link 中的函数从 base64 字符串生成图像。
  • 然后获取图片的mime类型、大小和路径
  • 创建一个类似于 $_FILES 的数组。
  • 然后将其传递给wp_handle_upload

更新:

$_FILES数组的结构是这样的

array(5) {
    'name'     => string(8) "file name.extension" // file name with extension
    'type'     => string(0) "" // mime type of file, i.e. image/png
    'tmp_name' => string(0) "" // absolute path of file on disk.
    'error'    => int(2) // 0 for no error
    'size'     => int(0) // size in bytes
  }

您可以像上面那样创建包含所有详细信息的数组,使用各种文件处理 PHP 函数来获取大小和 mime 类型。名称是您想要放置的任何内容,tmp_name 是文件存在的服务器上的文件路径,在您的情况下,您从 base64 字符串保存文件的文件夹位置。

请参阅上面更新的链接,了解可以为您提供来自 base64 字符串的图像的功能。

关于php - 通过 wp_handle_upload 删除未放入上传文件夹的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33733870/

相关文章:

javascript - JQuery 与 JQuery.Min 对于粘性导航

php - 如果产品在 Woocommerce 中不征税,则隐藏额外的不含税价格

image - 圆形 CSS 边框看起来像素化

php - 类型提示抽象类单例

php - 如何禁用 magento 中的自动发票生成?

php - laravel Composer 更新 : the requested PHP extension dom is missing from your system

javascript - 将 Woocommerce 属性下拉列表转换为可点击文本

html - 如何将页脚固定到页面底部?

xcode - 如何在 xcode Swift 上将segmentIndex 与 imageView 链接

php - 索引 View 中的 "Delete Form"