如何通过编程下载Redmine中Documents类型链接的文件?
解决Redmine Documents类型文件的下载问题
Redmine的documents/{id}链接是文档的详情展示页,并非直接的文件下载地址,这和Attachments直接指向文件的逻辑不同。要下载Documents关联的文件,需要先获取文档对象,再提取其关联的附件资源,具体实现步骤如下:
实现步骤
- 获取目标Document对象,它会包含关联的附件列表
- 遍历附件列表(或指定单个附件),使用已有的下载逻辑获取文件字节
- 将字节写入本地文件
完整代码示例
var optionsBuilder = new RedmineManagerOptionsBuilder(); optionsBuilder.WithHost(RedmineHost); optionsBuilder.WithApiKeyAuthentication(apiKey); var rm = new RedmineManager(optionsBuilder); // 1. 获取Document对象,替换为你的文档ID var document = await rm.GetAsync<Document>(785); // 2. 遍历文档关联的所有附件并下载(如果只需单个附件,可通过索引或ID筛选) foreach (var docAttachment in document.Attachments) { var fileBytes = await rm.DownloadFileAsync(docAttachment.ContentUrl); // 拼接保存路径,这里用附件的文件名作为示例 var savePath = Path.Combine(yourSaveDirectory, docAttachment.FileName); System.IO.File.WriteAllBytes(savePath, fileBytes); }
关键说明
- Redmine的Document实体本身不直接存储文件,而是通过
Attachments属性关联一个或多个附件文件 - 如果文档仅关联单个附件,可直接取
document.Attachments.FirstOrDefault()来获取,无需遍历 - 确保你的API Key拥有该文档及附件的访问权限,否则会返回权限错误
内容的提问来源于stack exchange,提问作者MirlvsMaximvs
相关产品推荐
相关产品推荐

