Redmine API上传文件至项目文件区失败求助
问题:如何通过Redmine API将上传的文件添加到项目文件区
我需要把文件上传到Redmine项目的「文件」板块,已经完成了文件上传获取令牌的步骤:
使用以下curl命令上传文件获取令牌:
curl -ik -d "@dummy.txt" -H "Content-Type:application/octet-stream" -X POST https://myredmine.local/uploads.json?filename=dummy.txt&key=mysecretapikey
请求返回的令牌信息示例:
{"upload":{"id":174152,"token":"177152.17ace63347256470b75443c5aed7607f21fe3b90cc269d642404edb55dd00732"}}
但不知道怎么把已上传的文件添加到项目的文件区,虽然知道要向https://myredmine.local/projects/myproj/files.json(myproj是项目标识符)发送POST请求,但多次尝试都失败了,比如用了这个命令:
curl -ik -X POST --header "Content-Type: application/json" --data '{"file": {"filename":"dummy.txt", "description":"Test upload via API","content_type": "", "token":"177152.177152.17ace63347256470b75443c5aed7607f21fe3b90cc269d642404edb55dd00732"}}' https://myredmine.local/projects/myproj/files.json?key=mysecretapikey
解决方法
你的请求失败主要有两个问题:
- Token值重复:你在请求里写的
token是177152.177152.xxx,但实际返回的token是177152.xxx,多了一段重复前缀,这会导致Redmine无法识别上传的文件。 - Content-Type为空:建议填写文件对应的MIME类型,比如文本文件填
text/plain,如果不确定可以留空,但需确保其他参数正确。
正确的curl命令如下:
curl -ik -X POST \ --header "Content-Type: application/json" \ --data '{ "file": { "filename": "dummy.txt", "description": "Test upload via API", "content_type": "text/plain", "token": "177152.17ace63347256470b75443c5aed7607f21fe3b90cc269d642404edb55dd00732" } }' \ https://myredmine.local/projects/myproj/files.json?key=mysecretapikey
额外注意事项:
- 确保你的API密钥
mysecretapikey拥有该项目的文件创建权限 - 上传文件的令牌有效期较短,需在获取后尽快使用
内容的提问来源于stack exchange,提问作者slarag
相关产品推荐
相关产品推荐

