You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Mega API在C#中上传文件夹或目录?

在C#中上传整个文件夹到Mega云存储

你可以使用MegaApiClient这个NuGet包来实现整个文件夹的上传——虽然它没有直接提供上传文件夹的API,但可以通过递归遍历本地文件夹、同步云端目录结构后逐个上传文件来完成。

实现步骤:

  • 首先安装NuGet包:Install-Package MegaApiClient
  • 编写递归逻辑,完成以下操作:
    1. 连接到Mega账号
    2. 遍历本地文件夹的所有文件和子目录
    3. 在Mega云端创建与本地对应的目录结构
    4. 将本地文件上传到对应的云端目录

示例代码:

using MegaApiClient;
using System.IO;

class MegaFolderUploader
{
    static async Task Main(string[] args)
    {
        using var client = new MegaApiClient();
        // 登录Mega账号
        await client.LoginAsync("your-email@example.com", "your-password");

        string localFolderPath = @"C:\YourLocalFolder";
        string megaParentFolderId = "your-mega-parent-folder-id"; // 目标父文件夹ID,可通过client.GetNodesAsync()获取

        // 开始递归上传
        await UploadFolderRecursively(client, localFolderPath, megaParentFolderId);

        await client.LogoutAsync();
    }

    static async Task UploadFolderRecursively(IMegaApiClient client, string localFolder, string megaParentId)
    {
        // 获取本地文件夹名称,在云端创建对应目录
        string folderName = Path.GetFileName(localFolder);
        var megaFolder = await client.CreateFolderAsync(folderName, megaParentId);

        // 遍历本地文件夹中的文件
        foreach (var file in Directory.GetFiles(localFolder))
        {
            Console.WriteLine($"上传文件: {file}");
            await client.UploadFileAsync(file, megaFolder.Id);
        }

        // 递归处理子文件夹
        foreach (var subFolder in Directory.GetDirectories(localFolder))
        {
            await UploadFolderRecursively(client, subFolder, megaFolder.Id);
        }
    }
}

注意事项:

  • 如果你需要匿名上传,可以使用client.LoginAnonymousAsync()代替账号登录
  • 可以添加进度回调,比如在UploadFileAsync中传入IProgress<TransferProgress>来跟踪上传进度
  • 记得处理异常(比如网络中断、文件权限问题等),可以在代码中加入try-catch块

内容的提问来源于stack exchange,提问作者Ben Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:48:19