问题复现
在《使用-create-ml-训练模型》一文中想要上传SleepCalculator.mlmodel文件时,发现WordPress后台提示“抱歉,您无权上传此文件类型。“
经搜寻发现WordPress默认不允许上传非常规的文件类型,因此本次上传的.mlmodel是二进制文件,因此需要采用其他方案进行上传。
解决方案
主要有以下三种方式,使用插件、修改functions.php文件、后台上传。
1、使用插件
WordPress可通过下载WP Extra File Types来安装并激活插件。
WP Extra File Types官方下载地址:https://downloads.wordpress.org/plugin/wp-extra-file-types.latest-stable.zip
WP Extra File Types(0.5.2版本)其他下载地址:https://fangjunyu.com/wp-content/uploads/2024/09/wp-extra-file-types.0.5.2.zip
下载WP Extra File Types插件后,在WordPress后台中,点击“插件”-“安装新插件”-“上传插件”
选择“wp-extra-file-types.0.5.2.zip”并点击“立即安装”按钮,完成插件安装。
安装完成后,点击“设置”-“Extra File Types”
打开Extra File Types界面后,滑动至页面尾部,因为这里只有常见的文件格式,本次需要添加的是mlmodel二进制文件,因此需要添加自定义的文件类型。
参考上图,Description填写文件描述,File Extension填写文件后缀”mlmodel”,Mime Type填写“application/octet-stream”。
MIME 类型(Multipurpose Internet Mail Extensions)是用来标识文件类型的互联网标准。它告诉浏览器或服务器文件的类型和格式,以便正确地处理文件。例如,图片的 MIME 类型可以是 image/png 或 image/jpeg,而网页的 MIME 类型通常是 text/html。
因为 .mlmodel 是二进制文件,MIME 类型 application/octet-stream 通常用于表示通用的二进制数据。
注意的是,文件后缀无论填写“.mlmodel”还是“mlmodel”,是否添加.后缀都是允许的,Mime Type也会默认使用“application/octet-stream”,如果你填的是错误的Mime Type,系统也会自动纠正过来。
修改完成后,点击底部的“保存变更”按钮,完成操作。
最后,我们就可以在“媒体”中自由的添加后缀为“mlmodel ‘的文件。
2、修改functions.php文件
在WordPress后台,找到“外观”-“主题文件编辑器”-“functions.php”
在functions.php文件的底部,添加下述代码并点击“更新文件”按钮。
function allow_mlmodel_uploads($mime_types) {
$mime_types['mlmodel'] = 'application/octet-stream'; // 添加 MLModel 文件类型
return $mime_types;
}
add_filter('upload_mimes', 'allow_mlmodel_uploads');
完成更新后,也可以添加在媒体中添加“mlmodel”文件,如需添加其他的二进制文件,只需要修改“mlmodel”后缀即可。
3、后台上传
因为我的WordPress部署在Docker容器上,因此,首先将文件从客户端传到服务器上,使用scp命令传递,此处略过传递代码。
首先通过docker ps命令,查询容器id,然后进入到容器中,找到word press容器的文件上传位置。最后,退出容器,从服务器端将“mlmodel”传递到文件上传位置。
docker ps // 1、容器查询命令,找到容器id
docker exec -it 容器id bash // 2、进入容器
cd wp-content/uploads/年份/月份 // 3、进入uploads文件夹的具体月份
pwd // 4、获取当前的月份地址
exit // 5、退出容器
这里的具体月份地址为:
/var/www/html/wp-content/uploads/2024/09
最后,我们找到要传递的“mlmodel”文件,使用docker cp命令将文件拷贝至word press容器,最后通过链接直接访问。
注意,你直接通过后台上传的“mlmodel”文件,不会在word press后台的媒体库中出现。
docker cp fangjunyu.mlmodel 18cc785cc795:/var/www/html/wp-content/uploads/2024/09 // 拷贝至docker容器
Successfully copied 2.56kB to 18cc785cc795:/var/www/html/wp-content/uploads/2024/09 // 拷贝成功
完成上述操作后,我们可以在网站中直接访问本次上传的文件地址(/wp-content/uploads/2024/09):
本次上传的mlmodel文件地址:https://fangjunyu.com/wp-content/uploads/2024/09/fangjunyu.mlmodel
参考资料
- WordPress遇到“抱歉,您无权上传此文件类型。“如何解决:https://www.vpsss.net/28526.html
- WP Extra File Types:https://wordpress.com/plugins/wp-extra-file-types