加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 通过wp_handle_upload删除未放在uploads文件夹中的图像

发布时间:2020-12-13 16:26:01 所属栏目:PHP教程 来源:网络整理
导读:我将图像保存到uploads文件夹,但是我使用 file_put_contents而不是 wp_handle_upload – 因为我在base64中获取图像,而不是$_FILES中的文件. 图像和某些帖子数据将被保存/更新,因为它们应该使用此功能: wp_insert_attachment wp_update_attachment_metadata
我将图像保存到uploads文件夹,但是我使用 file_put_contents而不是 wp_handle_upload – 因为我在base64中获取图像,而不是$_FILES中的文件.

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

> wp_insert_attachment
> wp_update_attachment_metadata

问题是当我想要删除一个旧的图像(当保存一个新的图像时).

wp_delete_attachment不会删除图像(它似乎删除db中的东西..).我在想,问题在于不使用wp_handle_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 to $_FILES”的解决方法吗?

正如@KamilP所说,WP在wp_posts和wp_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字符串给出图像.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读