使用 CMD_SKINS 的 Directadmin 上传徽标出现错误无法获取 MIME 类型
Posted
技术标签:
【中文标题】使用 CMD_SKINS 的 Directadmin 上传徽标出现错误无法获取 MIME 类型【英文标题】:Directadmin upload logo using CMD_SKINS with error cannot get mime-type 【发布时间】:2021-05-12 17:30:31 【问题描述】:我正在尝试使用 CMD_API_SKINS 上传自定义徽标
这是我使用 curl + bash 的完整代码:
#/bin/bash
# DA needs this path
mkdir -p /home/tmp
# Assume my logo file is already here:
default_logo_file_home="/home/tmp/logo.png"
# The logo file is set to nobody:nogroup
chown nobody:nogroup "$default_logo_file_home"
## Setup query data for curl:
username="admin"
password="12321aa"
da_port="2222"
host_server="server.domain.com"
ssl="https"
skin_name="evolution"
command="CMD_API_SKINS"
data="action=upload_logo&file=$default_logo_file_home&json=yes&name=$skin_name&which=1"
method="POST"
curl --silent --request "$method" --user "$username":"$password" --data "$data" "$ssl://$host_server:$da_port/$command"
在调试此 API 时,我收到如下错误:
text='An Error Occurred'
result='Cannot get mime-type for log<br>
似乎 DA 正在尝试解析并获取文件“logo.png”的扩展名,但它无法
完整的错误日志:
DirectAdmin 1.61.5
Accepting Connections on port 2222
Sockets::handshake - begin
Sockets::handshake - end
/CMD_API_SKINS
0: Accept: */*
1: Authorization: Basic bWF4aW93bng3OnhGVEVHe***jUSg/UTRTfVdHYW0+fWNURn5ATWN***HFbZGpMezlQZ***=
2: Content-Length: 75
3: Content-Type: application/x-www-form-urlencoded
4: Host: server.domain.com:2222
5: User-Agent: curl/7.75.0
Post string: action=upload_logo&file=/home/tmp/logo2.png&json=yes&name=evolution&which=2
auth.authenticated
User::deny_override:/CMD_API_SKINS: call_level=2, depth1: aborting due to do depth
User::deny_override:/CMD_DOMAIN: call_level=2, depth1: aborting due to do depth
User::deny_override:/CMD_DOMAIN: call_level=1, depth2: aborting due to do depth
Plugin::addHooks: start
Plugin::addHooks: end
Command::doCommand(/CMD_API_SKINS)
cannot get mime type for log
Dynamic(api=1, error=1):
text='An Error Occurred'
result='Cannot get mime-type for log<br>
'
Command::doCommand(/CMD_API_SKINS) : finished
Command::run: finished /CMD_API_SKINS
我也尝试像这样对查询进行编码,但仍然遇到同样的错误
default_logo_file_home="%2Fhome%2Ftmp%2Flogo%2Epng"
data="action=upload%5Flogo&file=$default_logo_file_home&json=yes&name=$skin_name&which=%31"
有什么解释这里发生了什么吗?是否可以使用此 API 上传徽标?
【问题讨论】:
【参考方案1】:好的,我找到了任何地方都没有记录的技巧。上传的文件需要附加一个随机字符串。所以我改变了这个:
default_logo_file_home="/home/tmp/logo.png"
进入这个:
RANDOM_STR="EbYIES"
default_logo_file_home="/home/tmp/logo.png$RANDOM_STR"
现在完美运行
【讨论】:
以上是关于使用 CMD_SKINS 的 Directadmin 上传徽标出现错误无法获取 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Kettle java脚本组件的使用说明(简单使用升级使用)
PageHelp的使用getParameter的使用zpage-nav的使用QRcode的使用wxpay微信支付的使用jackson-xml数据的转换