C#/.NET RestSharp网络组件实现上传文件到远程服务器【可跨域传文件】
时间:2022-04-26
本文章向大家介绍C#/.NET RestSharp网络组件实现上传文件到远程服务器【可跨域传文件】,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
以前给大家分享了一个C#/.NET的网络组件–RestSharp,具体请参考:推荐一个.NET(C#)的HTTP辅助类组件–restsharp
今天再给大家示范一下如何应用RestSharp这个网络组件来实现可跨域的文件上传功能。
在文章的末尾我会把这个示例项目的源码下载发布出来。
本项目由一个客户端和一个ASP.NET WEB API 2来演示。客户端主要用于模拟用户的上传文件操作,而WEB API则是来接收用户上传的文件。在这里,我只贴出这两个部分的核心代码。
首先是WEB API(RestSharpUploadFileController.cs):
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):
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文件如下:
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网络组件实现上传文件到远程服务器【可跨域传文件】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Metal入门教程(四)灰度计算
- 最长公共子序列
- 为什么说Java是“write once and run anywhere”的语言?
- B站课程《三阴性乳腺癌表达矩阵探索》笔记之文献解读
- Docker简易笔记
- python面试题搜集:史上最全python面试题详解(二)
- Python操作Redis
- Django入门笔记:身份认证模块
- Go数据结构与算法之内置类型
- MySQL 高可用之双机热备
- 从Go语言开始,彻底学懂数据结构与算法 -- 线性表
- Spring的Bean管理(XML方式)
- 2020Java高频面试题--Java知识点汇总
- Java高频面试题----继承
- Django入门笔记--用户登录