C#/.NET RestSharp网络组件实现上传文件到远程服务器【可跨域传文件】
以前给大家分享了一个C#/.NET的网络组件–RestSharp,具体请参考:推荐一个.NET(C#)的HTTP辅助类组件–restsharp
今天再给大家示范一下如何应用RestSharp这个网络组件来实现可跨域的文件上传功能。
在文章的末尾我会把这个示例项目的源码下载发布出来。
本项目由一个客户端和一个ASP.NET WEB API 2来演示。客户端主要用于模拟用户的上传文件操作,而WEB API则是来接收用户上传的文件。在这里,我只贴出这两个部分的核心代码。
首先是WEB API(RestSharpUploadFileController.cs):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http; namespace RsUploadFileDemo.Web.Controllers { [RoutePrefix( "api/upload" )] public class RestSharpUploadFileController : ApiController { [Route( "rs" )] [HttpPost] public HttpResponseMessage Upload() { HttpResponseMessage response = null ; var request = HttpContext.Current.Request; if (request.Files.Count > 0) { var fileNameList = new List< string >(); foreach ( string file in request.Files) { var f = request.Files[file]; var fileSavePath = HttpContext.Current.Server.MapPath( "~/uploads/" + f.FileName); f.SaveAs(fileSavePath); fileNameList.Add(fileSavePath); } response = Request.CreateResponse(HttpStatusCode.OK, fileNameList); } else { response = Request.CreateResponse(HttpStatusCode.BadRequest); } return response; } } } |
其次是客户端(FrmMain.cs):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | private void btnUpload_Click( object sender, EventArgs e) { var fileLocation = @"D:\RestSharp.dll" ; try { var request = new RestRequest(Method.POST); request.AddFile( "file" , fileLocation); //calling server with restClient var restClient = new RestClient {BaseUrl = new Uri( "http://localhost:57546/api/upload/rs" )}; restClient.ExecuteAsync(request, (response) => { if (response.StatusCode == HttpStatusCode.OK) { MessageBox.Show( "上传成功...\n" + response.Content); } else { MessageBox.Show( string .Format( "出错啦:{0}" , response.Content)); } }); } catch (Exception ex) { MessageBox.Show( string .Format( "出错啦:{0}" , ex.Message)); } } |
需要注意的另一个问题是:我把WEB API的默认返回类型设置成了JSON格式的,这个设置只需要修改一下Global.asax.cs文件即可,修改后的Global.asax.cs文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using System.Net.Http.Formatting; using System.Net.Http.Headers; using System.Web; using System.Web.Http; namespace RsUploadFileDemo.Web { public class WebApiApplication : HttpApplication { protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add( new QueryStringMapping( "xml" , "true" , "application/xml" )); GlobalConfiguration.Configuration.Formatters.JsonFormatter.SupportedMediaTypes.Add( new MediaTypeHeaderValue( "text/html" )); } } } |
好了,以上就是这个关于使用RestSharp上传文件到远程服务器的示例的核心代码了,如果你有兴趣研究一下的话,可以戳【C#/.NET RestSharp网络组件实现上传文件到远程服务器[源码]】来下载。
最后,如果你喜欢这篇文章,或者是觉得文章内容对你有帮助的话,那就请动动你的手,为我点个赞吧^_^
本文同步发布至:图享 » C#/.NET RestSharp网络组件实现上传文件到远程服务器【可跨域传文件】
专注.NET开发的爱好者知识社区--【https://codedefault.com】。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端