【大牛看看】WebClient uploafile上传文件问题

R_zhanche 2013-12-31 08:29:03
  WebClient webClient = new WebClient();


使用WebClient uploafile在客户端向服务器端上传文件,到底WebClient这个类需不需要服务端接受页面啊?

比如这样的

 Uri u = new Uri("http://local.com/uploadfile");


就直接写入到local.com网站下的uploadfile文件夹下
...全文
374 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
R_zhanche 2014-01-03
  • 打赏
  • 举报
回复
引用 13 楼 guwei4037 的回复:
我不会睁着眼睛说瞎话的,之所以我这样说,是因为我实际项目中使用过,也才“敢”回复你的问题。
不是说瞎话,我还是不能实现 上传到指定任意目录。
全栈极简 2014-01-03
  • 打赏
  • 举报
回复
我不会睁着眼睛说瞎话的,之所以我这样说,是因为我实际项目中使用过,也才“敢”回复你的问题。
R_zhanche 2014-01-03
  • 打赏
  • 举报
回复
引用 4 楼 guwei4037 的回复:
WebClient.UploadFile(uriString,"PUT",fileNamePath); try...
引用 2 楼 guwei4037 的回复:
不需要,可以直接上传到指定目录下。
我自己测试总结,还是有一个服务端接收页面比较好。【不需要,可以直接上传到指定目录下】这句话似乎是错误的
R_zhanche 2014-01-02
  • 打赏
  • 举报
回复
顶起来
引用 2 楼 guwei4037 的回复:
不需要,可以直接上传到指定目录下。
  • 打赏
  • 举报
回复
其实解决问题,不在于你多么“省力”,而在于找你有把握做好的方法、避免找成事不足败事有余的借口去瞎试。
  • 打赏
  • 举报
回复
引用 6 楼 R_zhanche 的回复:
[quote=引用 5 楼 sp1234 的回复:] [quote=引用 3 楼 R_zhanche 的回复:] 我测试哪个都不对啊,按理说默认是使用post方法,但是却会提示【远程服务器返回错误: (405) 不允许的方法】
写一个服务器端接受页面(推荐ashx),并且调试。贴出你的调试画面。[/quote] 不是不需要接受页面吗[/quote] 你写一个6、7行代码的接受页面,不就就能方便自己调试了嘛。
R_zhanche 2013-12-31
  • 打赏
  • 举报
回复
引用 4 楼 guwei4037 的回复:
WebClient.UploadFile(uriString,"PUT",fileNamePath); try...
直接使用put还不行 我已经开启了webdav服务模块,在IIS7的处理程序映射中搞不清 该设置哪个请求限制 允许put操作。 还有没有其他限制?
R_zhanche 2013-12-31
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
[quote=引用 3 楼 R_zhanche 的回复:] 我测试哪个都不对啊,按理说默认是使用post方法,但是却会提示【远程服务器返回错误: (405) 不允许的方法】
写一个服务器端接受页面(推荐ashx),并且调试。贴出你的调试画面。[/quote] 不是不需要接受页面吗
  • 打赏
  • 举报
回复
引用 3 楼 R_zhanche 的回复:
我测试哪个都不对啊,按理说默认是使用post方法,但是却会提示【远程服务器返回错误: (405) 不允许的方法】
写一个服务器端接受页面(推荐ashx),并且调试。贴出你的调试画面。
全栈极简 2013-12-31
  • 打赏
  • 举报
回复
WebClient.UploadFile(uriString,"PUT",fileNamePath); try...
R_zhanche 2013-12-31
  • 打赏
  • 举报
回复
引用 2 楼 guwei4037 的回复:
不需要,可以直接上传到指定目录下。
   webClient.UploadFile("http://apitest.myserver.com/uploadfile", filePath);
            
本地文件 map.jpg传到服务器apitest.myserver.com网站下的uploadfile文件夹下, 这里的filepath是写map.jpg 还是 【本地绝对路径+map.jpg】 我测试哪个都不对啊,按理说默认是使用post方法,但是却会提示【远程服务器返回错误: (405) 不允许的方法】
全栈极简 2013-12-31
  • 打赏
  • 举报
回复
不需要,可以直接上传到指定目录下。
egood21 2013-12-31
  • 打赏
  • 举报
回复
private Task<HttpResponseMessage> Post(string rootPath, string folder,bool newFileName) { var PATH = HttpHelper.AbsolutePath(rootPath); if (Request.Content.IsMimeMultipartContent()) { string uploadPath = string.IsNullOrEmpty(folder) ? PATH : Path.Combine(PATH, folder); if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } var streamProvider = new CustomMultipartFormDataStreamProvider(uploadPath, newFileName); var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<HttpResponseMessage>(t => { if (t.IsFaulted || t.IsCanceled) { throw new HttpResponseException(HttpStatusCode.InternalServerError); } var fileInfo = streamProvider.FileData.Select(i => { var oldFileName = i.Headers.ContentDisposition.FileName; oldFileName = oldFileName.Replace("\"", string.Empty); var info = new FileInfo(i.LocalFileName); string fileName = info.Name; //后缀名 string extenstion = string.Empty; if (fileName.IndexOf(".") >= 0) //含有后缀名 extenstion = fileName.Substring(fileName.LastIndexOf(".") + 1); long size = info.Length / 1024; //返回的路径,不再添加主目录 --- //string newFilePath = string.IsNullOrEmpty(folder) ? rootPath + "/" + fileName : rootPath + "/" + folder + "/" + fileName; string newFilePath = string.IsNullOrEmpty(folder) ? fileName : folder + "/" + fileName; return new FileDesc(oldFileName, newFilePath, size, extenstion); //return new FileDesc(info.Name, rootUrl + "/" + folderName + "/" + info.Name, info.Length / 1024); }); return Request.CreateResponse(HttpStatusCode.OK, fileInfo); }); return task; } else { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted")); } } public class CustomMultipartFormDataStreamProvider : MultipartFormDataStreamProvider { private bool _newFileName = false; public CustomMultipartFormDataStreamProvider(string path) : this(path, true) { } public CustomMultipartFormDataStreamProvider(string path, bool newFileName) : base(path) { _newFileName = newFileName; } public override string GetLocalFileName(HttpContentHeaders headers) { var name = !string.IsNullOrWhiteSpace(headers.ContentDisposition.FileName) ? headers.ContentDisposition.FileName : "NoName"; name = name.Replace("\"", string.Empty); if (_newFileName) { string newFileName = GetNewFileName(name); return newFileName; //this is here because Chrome submits files in quotation marks //which get treated as part of the filename and get escaped } //返回原有名称 return name; } /// <summary> /// 获取新的名称 比如:aa.jpg转化为aa(20090504).jpg /// </summary> /// <param name=”fileName”>文件名称[aa.jpg]</param> /// <returns>新的文件名称</returns> public static string GetNewFileName(string fileName) { if (string.IsNullOrEmpty(fileName)) return string.Empty; string newFileName = string.Empty; if (fileName.IndexOf(".")>=0) //含有后缀名 { //文件后缀名 string extenstion = fileName.Substring(fileName.LastIndexOf(".") + 1); string name = fileName.Substring(0, fileName.LastIndexOf(".")) + "(" + DateTime.Now.ToFileTime() + ")"; newFileName = name + "." + extenstion; } else { string name = fileName + "(" + DateTime.Now.ToFileTime() + ")"; newFileName = name; } return newFileName; } }
数据集可视化效果见下方。 【数据集概况】 · 检测类别(中文):[火(fire)] · 训练集:2565 张 · 验证集:244 张 · 测试集:122 张 · 总计:2931 张 该数据集针对夜间道路环境中的火情检测需求,精准捕捉火源特征,为道路安全监控系统提供可靠的数据支持,具有显著的安全预警价值和实际应用意义。该数据集的训练集、验证集和测试集分别包含2565张、244张和122张图像,分布比例合理,能够有效支持模型的训练、验证和测试过程,确保模型性能的稳定性和可靠性。该数据集的标注工作严谨细致,火目标的边界框标注精准,与实际火源位置高度吻合,标注规范符合行业标准,为模型... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 58 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9537** mAP50-95 | 0.6455 Precision | 0.9156 Recall | 0.9168 train/box_loss | 1.0237 train/cls_loss | 0.5109 val/box_loss | 1.1818 val/cls_loss | 0.5480 【训练过程分析】 58 轮训练后 mAP50 达到 0.9537,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6455,和 mAP50 差距 0.31,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9156、Recall 0.9168,精召双高,模型对火的检测能力强。 ...
可参考下方数据集可视化效果。 【数据集概况】 · 检测类别(中文):[底盘铭牌(Chassis)] · 训练集:3258 张 · 验证集:136 张 · 测试集:0 张 · 总计:3394 张 该数据集聚焦于工业制造与车辆检测场景中对汽车底盘铭牌的精准识别,涵盖多种品牌车辆(如通用、现代、日产、马自达等)在不同光照和污损条件下的铭牌图像。通过真实生产环境中的多样化样本采集,数据集有效支持了车辆身份验证、质量追溯及自动化检测系统的开发,具有显著的工程应用价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 34 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9649** mAP50-95 | 0.5292 Precision | 0.9019 Recall | 0.8783 train/box_loss | 1.2850 train/cls_loss | 0.7588 val/box_loss | 1.4612 val/cls_loss | 0.6408 【训练过程分析】 34 轮训练后 mAP50 达到 0.9649,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.5292,和 mAP50 差距 0.44,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9019、Recall 0.8783,精度高于召回,存在一定漏检。 【预测效果展示】 验证集预测效果较好,检测框基本准确覆盖底盘铭牌,置信度整体偏高。 【改进建议】 1. 增强难例挖掘:在大规...
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 远程桌面管理工具 基于 MSTSC 连接 Windows 远程桌面,并对其进行封装实现管理多个远程桌面配置的小工具 关键字: 效果图如下: 效果-主界面 效果-打开远程连接 1、什么是 MSTSC (Microsoft terminal services client) ? 创建与终端服务器或其他远程计算机的连接,适用于 Windows XP 及以上的 Windows 操作系统 MSTSC 还有一种说法,Microsoft Telnet Screen Control ,即“微软远程桌面控制”。 PS. 相信对本项目感兴趣的朋友肯定熟悉下面微软的官方工具,本项目也是基于其 ActiveX 控件进行的封装,实现对远程桌面的管理与使用 MSTSC 2、赶紧来添加第一个远程桌面连接 ? 点击左下角的 来,开启 选项,起个 并 来添加您的一个父级(分组)节点,譬如 样例-添加父节点 再次点击点击左下角的 来新建您的第一个连接,假定您已熟悉 MSTSC 相关设置,那么下面这个配置也难不住您了 样例-添加子节点 样例-显示新增的配置 单击此方块即可连接服务器,请确保网络无阻哦,一般来说 MSTSC 能连上,本工具同样可以 样例-正在连接 样例-连接成功 好了,基本上您已经掌握如何使用此工具了 3、还有其他功能应用? 支持拖动页签头来改变其位置 (同时连接了多个远程可能会有些用) 当你不想打开远程桌面,而只想打开远程服务器上的某个程序时,请在 时填写需要启动程序的路径,如 ,如果该目录已配置到环境变量的 中,如本示例使用程序名 亦同 右击页面头会有菜单选项,比如可执行 操作,右击连接方块或分组...

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧