C#中使用MediaFireApi上传FiddlerCore捕获文件的问题求助
解决FiddlerCore捕获路径指定与动态文件上传MediaFire问题
1. 指定FiddlerCore捕获文件的存储路径(解决崩溃问题)
FiddlerCore默认将捕获文件存在程序运行目录,自定义路径需修改Fiddler配置项,必须先确保目标目录存在且程序有写入权限——这是你设置路径后崩溃的核心原因。
代码示例:
using System.IO; using Fiddler; // 选择用户可写入的目录(比如Documents下的子目录,避免权限问题) string captureRootPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "FiddlerCaptures"); // 先检查并创建目录,防止路径不存在引发崩溃 if (!Directory.Exists(captureRootPath)) { Directory.CreateDirectory(captureRootPath); } // 设置FiddlerCore的捕获文件存储路径 FiddlerApplication.Prefs.SetString("fiddler.save.path", captureRootPath);
崩溃排查补充:
- 不要直接使用系统盘根目录(如
C:\),这类路径需要管理员权限,易触发权限错误 - 路径字符串加
@避免转义问题,或用Path.Combine拼接路径更安全
2. 上传动态命名的捕获文件
方案一:自定义动态文件名启动捕获
启动捕获时直接指定带动态标识(如时间戳)的文件名,后续直接用该路径上传:
// 生成带高精度时间戳的动态文件名,避免重复 string dynamicFileName = $"FiddlerCapture_{DateTime.Now:yyyyMMddHHmmssfff}.saz"; string fullCapturePath = Path.Combine(captureRootPath, dynamicFileName); // 启动捕获到指定文件 FiddlerApplication.StartCapture(fullCapturePath); // 捕获完成后,直接传入路径调用上传方法 // UploadToMediaFire(fullCapturePath);
方案二:捕获结束后获取最新生成的文件
如果依赖FiddlerCore自动生成的文件名,可在捕获停止后从指定目录筛选最新的.saz文件:
// 停止捕获 FiddlerApplication.StopCapture(); // 获取目录下最新的saz文件 var latestCapture = new DirectoryInfo(captureRootPath) .GetFiles("*.saz") .OrderByDescending(f => f.CreationTime) .FirstOrDefault(); if (latestCapture != null) { // 传入动态文件路径到MediaFire上传方法 UploadToMediaFire(latestCapture.FullName); }
适配MediaFire上传的调整
将原有静态文件名参数改为动态传入的路径即可,示例上传方法:
using MediaFireSDK; // 假设使用官方或第三方MediaFire SDK public async Task UploadToMediaFire(string localFilePath) { // 初始化MediaFire客户端(替换为你的API凭证) var client = new MediaFireClient("your_api_key", "your_session_token"); // 指定远程存储路径,上传本地文件 await client.Files.UploadAsync(localFilePath, "/FiddlerCaptures/"); }
内容的提问来源于stack exchange,提问作者user23300548
相关产品推荐
相关产品推荐

