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

C#批量上传桌面文件到服务器报Compiler Error CS0136怎么解决

问题原因

你触发的Compiler Error CS0136为变量引用/命名冲突类错误,结合你提供的代码,具体问题有两个:

  • 调用UploadFile方法时传入的第二个参数fileName没有做任何声明定义,你拼接的文件完整路径存放在str变量中,也可以直接调用FileInfo自带的FullName属性获取路径,不需要自行拼接
  • 手动拼接桌面路径的写法兼容性极差,如果用户修改过桌面默认存储位置,代码会直接运行报错

修复后可用代码

using System;
using System.IO;
using System.Net;

namespace Upload
{
    class Program
    {
        static void Main(string[] args)
        {
            // 直接获取系统桌面路径,兼容性更强
            string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            // 服务器上传地址
            string uriString = "https://webserver.com/test";

            DirectoryInfo desktopDir = new DirectoryInfo(desktopPath);
            FileInfo[] desktopFiles = desktopDir.GetFiles();

            foreach (FileInfo file in desktopFiles)
            {
                Console.WriteLine($"正在上传:{file.FullName}");
                // WebClient实现了IDisposable接口,用using包裹可自动释放资源
                using (WebClient myWebClient = new WebClient())
                {
                    // 直接传入FileInfo的FullName属性即可,不需要手动拼接路径
                    byte[] responseArray = myWebClient.UploadFile(uriString, file.FullName);
                    Console.WriteLine($"上传完成,服务器响应长度:{responseArray.Length}");
                }
            }
        }
    }
}

补充注意事项

  • 如果服务器需要身份验证,要提前给myWebClient.Credentials属性赋值对应的账号密码
  • 测试场景下如果使用自签名SSL证书需要跳过校验,可以在代码开头加ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;,生产环境不建议使用该配置
  • WebClient属于较老的API,.NET Core/.NET 5+环境更推荐使用HttpClient实现上传逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:06:04