GitLab API - 如何列出子文件夹中的所有文件
GitLab API - How to list all files in subfolder
我花了很多时间尝试让这行看似简单的代码使用 C# 工作。正在尝试获取我的存储库中所有文件的列表。
文件结构如下:
MyRepo
-directory_01
--myFile_01.jpg
--myFile_02.jpg
这行代码列出了我所有的目录并且效果很好:
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/tree?private_token=myToken"
根据 api,要仅获取我的文件,我应该使用 files/:file_path
属性或 archive.<file extension>
来获取我的文件。
//Get all .jpg files
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/archive.jpg?private_token=myToken"
OR
//Get one file
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken"
//result: 404
当你这个API你还需要通过branch name
改变
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken"
到
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken&ref=<branch_name>"
为了防止其他人遇到这个问题,这里有一个方法可以解决这个问题:
// Get list of files***********
string treeUri = $"{project}tree?private_token={projectToken}&ref=master";
string treeData = await client.GetStringAsync(treeUri);
List<AssetEntry> json = System.Text.Json.JsonSerializer.Deserialize<List<AssetEntry>>(treeData);
Console.WriteLine("FILE LIST:\n");
foreach (var item in json)
{
Console.WriteLine(item.name + " " );
}
我花了很多时间尝试让这行看似简单的代码使用 C# 工作。正在尝试获取我的存储库中所有文件的列表。
文件结构如下:
MyRepo
-directory_01
--myFile_01.jpg
--myFile_02.jpg
这行代码列出了我所有的目录并且效果很好:
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/tree?private_token=myToken"
根据 api,要仅获取我的文件,我应该使用 files/:file_path
属性或 archive.<file extension>
来获取我的文件。
//Get all .jpg files
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/archive.jpg?private_token=myToken"
OR
//Get one file
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken"
//result: 404
当你这个API你还需要通过branch name
改变
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken"
到
var streamTask = client.GetStringAsync(https://myURL/api/v4/projects/myRepo/repository/files/directory_01%2FmyFile_01%2Ejpg?private_token=myToken&ref=<branch_name>"
为了防止其他人遇到这个问题,这里有一个方法可以解决这个问题:
// Get list of files***********
string treeUri = $"{project}tree?private_token={projectToken}&ref=master";
string treeData = await client.GetStringAsync(treeUri);
List<AssetEntry> json = System.Text.Json.JsonSerializer.Deserialize<List<AssetEntry>>(treeData);
Console.WriteLine("FILE LIST:\n");
foreach (var item in json)
{
Console.WriteLine(item.name + " " );
}