我想将当前根文件夹的路径更改为mt C:或桌面,例如, 我正在使用此代码:
public IActionResult About(IList<IFormFile> files)
{
foreach (var file in files)
{
var filename = ContentDispositionHeaderValue
.Parse(file.ContentDisposition)
.FileName
.Trim('"');
filename = hostingEnv.WebRootPath + $@"\{filename}";
using (FileStream fs = System.IO.File.Create(filename))
{
file.CopyTo(fs);
fs.Flush();
}
}
return View();
}
我尝试更改webrootpath或在$ @之后进行操作,但无济于事。
答案 0 :(得分:2)
另一个答案似乎是混淆从上传文件的服务器下载文件。
IHostingEnvironment.WebRootPath
只是服务器上静态文件的路径(默认情况下:wwwroot文件夹)。要将上载的文件保存到WebRootPath以外的目录,只需将hostingEnv.WebRootPath
替换为计算机上任何其他目录的完整路径即可。
public IActionResult About(IList<IFormFile> files)
{
foreach (var file in files)
{
var filename = ContentDispositionHeaderValue
.Parse(file.ContentDisposition)
.FileName
.Trim('"');
filename = @"C:\UploadsFolder" + $@"\{filename}";
using (FileStream fs = System.IO.File.Create(filename))
{
file.CopyTo(fs);
fs.Flush();
}
}
return View();
}
但是,您必须确保此目录存在,并且您的应用程序有权写入该目录。从Visual Studio运行调试中的应用程序将以用户身份运行它,因此它需要是您有权写入的目录。在生产环境中,这会变得更加复杂,取决于您的托管设置。
答案 1 :(得分:0)
您无法访问网络应用根文件之外的任何文件,除非您使用以下其中一项otpions:
使用上传文件控制器:
<input type="file" name="UploadFile" /></span>
你必须让用户指定他想要上传的文件。
我不是ASP专家,但我知道这件事:
能够使用Web应用程序后面的代码自由地浏览C:\中的文件将代表主要的安全性。
编辑:
这是向用户提供文件的 方式:
private void UserDownload(string fileOutPutName, string fileType, string fileContentPath)
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + Server.UrlPathEncode(fileOutPutName));
Response.ContentType = fileType;
try
{
Response.WriteFile(fileContentPath);
}
catch
{}
Response.End();
}
该文件最终会进入浏览器的下载文件夹。能够将文件写入客户端的C:\与访问他的C:\
一样不安全ASP.NET不会让你这样做