获取IP相关信息和文件上传
获取IP相关信息
要获取用户访问者的IP地址相关信息,可以利用依赖注入,获取IHttpConnectionFeature
的实例,从该实例上可以获取IP地址的相关信息,实例如下:
var connection1 = Request.HttpContext.GetFeature<IHttpConnectionFeature>();
var connection2 = Context.GetFeature<IHttpConnectionFeature>();
var isLocal = connection1.IsLocal; //是否本地IP
var localIpAddress = connection1.LocalIpAddress; //本地IP地址
var localPort = connection1.LocalPort; //本地IP端口
var remoteIpAddress = connection1.RemoteIpAddress; //远程IP地址
var remotePort = connection1.RemotePort; //本地IP端口
类似地,你也可以通过IHttpRequestFeature
、IHttpResponseFeature
、IHttpClientCertificateFeature
、 IWebSocketAcceptContext
等接口,获取相关的实例,从而使用该实例上的特性,上述接口都在命名空间Microsoft.AspNet.HttpFeature
的下面。
文件上传
MVC6在文件上传方面,给了新的改进处理,举例如下:
<form method="post" enctype="multipart/form-data">
<input type="file" name="files" id="files" multiple />
<input type="submit" value="submit" />
</form>
我们在前端页面定义上述上传表单,在接收可以使用MVC6中的新文件类型IFormFile
,实例如下:
[HttpPost]
public async Task<IActionResult> Index(IList<IFormFile> files)
{
foreach (var file in files)
{
var fileName = ContentDispositionHeaderValue
.Parse(file.ContentDisposition)
.FileName
.Trim('"');// beta3版本的bug,FileName返回的字符串包含双引号,如"fileName.ext"
if (fileName.EndsWith(".txt"))// 只保存txt文件
{
var filePath = _hostingEnvironment.ApplicationBasePath + "\\wwwroot\\"+ fileName;
await file.SaveAsAsync(filePath);
}
}
return RedirectToAction("Index");// PRG
}