Server.MapPath和Request.MapPath()的用法

Server.MapPath和Request.MapPath()的用法

./当前目录 
/根目录 
../上层目录(相对当前来说) 
如果当前的网站目录为D:\wwwroot    浏览的页面路径为D:\wwwroot\company\news\show.asp 
在show.asp页面中使用
Server.MapPath("./")   返回路径为:D:\wwwroot\company\news 
Server.MapPath("/")    返回路径为:D:\wwwroot 
Server.MapPath("../")   返回路径为:D:\wwwroot\company 
server.MapPath(request.ServerVariables("Path_Info")) 
Request.ServerVariables("Path_Translated")   
上面两种方式返回路径为 D:\wwwroot\company\news\show.asp 


ASP.NET中Server.MapPath() 和 Request.MapPath()区别: 
Server.MapPath(string)   :是将相对于当前调用文件的文件(或目录)映射为物理路径; 
Request.MapPath(string) :是将string虚拟路径映射为物理路径(asp中Request无此方法) 
Server.MapPath(string) 中string 可以用“../”方式引用父目录,甚至可以将此目录跳到整个WEB目录外,如:C:\WWWROOT 
目录为WEB根目录,在根目录文件中调用此Server.MapPath("../xyz.gif"),则可以调用WEB目录外的脚本、资源等。 
Request.MapPath(string) 中的string为虚拟目录,只能相对WEB虚拟目录形式的,也不允许"../"方式调用,只能是"/","/xx"等字符串 
有时候直接用Server.MapPath(string) 调用一个文件比较麻烦,因为不同的目录中调用同一个Server.MapPath(string) 函数就会得到不同的值, 
特殊的话,就需要通过判断本身目录层次才能获取正确的地址,使用的Request.MapPath(string)就可以调用同一个目录文件。不用做目录判断
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果 Web API 控制器方法中,使用 `HttpContext.Current.Request.Form["username"]` 没有获取到客户端提交的表单数据,可能有以下原因: 1. 客户端没有将表单数据正确地提交到服务器端。可以使用浏览器的开发者工具查看客户端提交的请求是否正确。 2. 客户端表单数据的键名与服务器端代码中使用的不一致。可以查看客户端和服务器端代码中使用的键名是否一致。 3. 客户端提交的表单数据中,键名或值包含特殊字符。可以查看客户端提交的表单数据是否包含特殊字符,例如空格、中文字符等,这些字符可能会对表单数据的解析造成影响。 4. 服务器端代码中存在问题。可以检查服务器端代码,确保使用 `HttpContext.Current.Request.Form` 属性获取表单数据的代码正确无误。 如果以上方法都没有解决问题,可以尝试使用其他方式获取表单数据,例如使用 `Request.Content.ReadAsFormDataAsync()` 方法来获取表单数据。以下是一个示例代码: ```csharp [HttpPost] public async Task<IHttpActionResult> UploadFile() { // 获取表单数据 var formData = await Request.Content.ReadAsFormDataAsync(); string username = formData["username"]; string password = formData["password"]; // 获取上传的文件 var fileData = await Request.Content.ReadAsByteArrayAsync(); HttpContentHeaders headers = Request.Content.Headers; string fileName = headers.ContentDisposition.FileName.Replace("\"", ""); string filePath = Path.Combine(HttpContext.Current.Server.MapPath("~/Uploads"), fileName); File.WriteAllBytes(filePath, fileData); return Ok(); } ``` 在这个示例中,我们使用 `Request.Content.ReadAsFormDataAsync()` 方法获取表单数据,并使用键名获取表单值。然后,我们使用 `Request.Content.ReadAsByteArrayAsync()` 方法获取上传的文件数据,并使用 `File.WriteAllBytes()` 方法将文件写入到服务器的指定目录中。最后,我们使用 `IHttpActionResult` 接口返回一个 HTTP 200 OK 响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值