Windows CMD下正确的CURL文件上传命令求助
修正Windows CMD下的curl文件上传命令,解决token缺失错误
我需要在Windows CMD环境下使用curl命令向指定API上传文件,但当前命令执行失败,报错信息如下:
{"message":"The given data was invalid.","errors":{"token":["The token field is required."]}}
提供的PHP参考代码
<?php $path = '/path/to/local/file'; $cFile = curl_file_create($path); $token = '0123456789'; $post = array('token' => $token, 'file' => $cFile); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.myfiles.com/upload'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = json_decode(curl_exec($ch), true); curl_close($ch); if(isset($result['status']) && $result['status'] === 'success') { echo $result['url']; } else { echo $result['message']; } ?>
API参数说明
| Parameter | Value | Description |
|---|---|---|
| Endpoint | https://api.myfiles.com/upload | 接收请求的API端点 |
| token | 0123456789 | 请求授权所需的认证令牌 |
| file | 你的文件 | 要上传的文件 |
| folder_alias(可选) | 你的文件夹别名 | 上传文件的目标文件夹(可选参数) |
当前使用的错误curl命令
curl --insecure -X POST https://api.myfiles.com/upload 'Authorization: Bearer 0123456789' -H 'Content-Type: application/json' -F "file=@c:\myfiles\file.pdf"
修正后的curl命令
基础版(仅必填参数)
curl --insecure -X POST https://api.myfiles.com/upload -F "token=0123456789" -F "file=@c:\myfiles\file.pdf"
带可选文件夹参数版
curl --insecure -X POST https://api.myfiles.com/upload -F "token=0123456789" -F "file=@c:\myfiles\file.pdf" -F "folder_alias=你的文件夹别名"
错误原因说明
- token传递方式错误:原命令尝试通过
Authorization请求头传递token,但API要求token作为表单字段提交,参考PHP代码也是将token放在POST表单数组中。 - Content-Type设置错误:文件上传需要使用
multipart/form-data格式,curl使用-F参数时会自动设置正确的Content-Type,无需手动指定application/json,后者会导致API无法解析表单数据。 - 语法错误:原命令中的
'Authorization: Bearer 0123456789'缺少-H前缀,属于无效参数。
内容的提问来源于stack exchange,提问作者georgman
相关产品推荐
相关产品推荐

