使用this question我想出了这个代码来保存文件
$ chmod +x /home/ceriak/ruby/test.rb
但是在实例化[HttpPost]
public IActionResult Upload(string office, IFormFile file)
{
if (file.Length > 0) {
var filePath = Path.GetFullPath(Path.Combine(_environment.WebRootPath,
_configuration["SydneyFloorplanPath"]));
using (var fileStream = new FileStream(filePath, FileMode.Create)) {
file.CopyTo(fileStream);
}
}
return RedirectToAction("Index", new{office = office});
}
:
System.Private.CoreLib.dll中发生了'System.IO.DirectoryNotFoundException'类型的异常,但未在用户代码中处理:'找不到路径的一部分'C:\ images \ Floorplan \ sydney。 PDF ''
但那不是我需要的道路。 FileStream
文件夹位于Images
...
如果wwwroot\images
实际上没有给我一个可用的相对路径,那么它有什么意义呢?
请注意,WebRootPath
是注入的_environment
我也注意到,如果我打电话
IHostingEnvironment
变量包含完整路径... var two = _environment.WebRootPath;
但在致电"C:\\Users\\bassie\\source\\repos\\TFS\\DSSTools\\wwwroot"
后,我突然有Path.Combine
...为什么?
修改
_environment是"C:\\images\\Floorplan\\sydney.pdf"
,例如:
IHostingEnvironment
答案 0 :(得分:0)
我设法使用
[HttpPost]
public IActionResult Upload(string office, IFormFile file)
{
var webRootPath = _environment.WebRootPath;
var floorPlanPath = _configuration["SydneyFloorplanPath"];
if (file.Length > 0) {
var filePath1 = Path.Combine(floorPlanPath,webRootPath.ReplaceFirst("/", ""));
using (var fileStream = new FileStream(filePath1, FileMode.Create)) {
file.CopyTo(fileStream);
}
}
return RedirectToAction("Index", new{office = office});
}
ReplaceFirst
是一个简单的StringExtension
public static string ReplaceFirst(this string text, string search, string replace)
{
int pos = text.IndexOf(search);
if (pos < 0)
{
return text;
}
return $"{text.Substring(0, pos)}{replace}{text.Substring(pos + search.Length)}";
}
所以/
中的前导webRootPath
似乎打破了Path.Combine
来电