首页 新闻 会员 周边

C#项目部署在Linux系统中,怎样将文件写入到指定的文件夹之内

0
悬赏园豆:5 [已解决问题] 解决于 2019-07-11 13:24

C#项目原来部署在Windows环境上,上传的文件都能到指定的文件夹里去,但是把项目部署到Linux系统中去之后,原本指定的文件去上传到项目的根目录中去了,没有到指定的文件夹去,这个怎么解决呢?
比如,后台代码是这样写的:var filepath = $@"{Environment.CurrentDirectory}/Resource/System/{fileGuid}/".Replace("\", "/");
var upPath=filepath +"xxxxx.jpg";
在本地测试都能把xxxx.jpg文件上传到项目中的Resource/System/{fileGuid}/这个文件夹里面,但是部署到Linux系统中之后,再上传文件就跑到项目的根目录中去了,这个怎么破?

gyangjing的主页 gyangjing | 初学一级 | 园豆:4
提问于:2019-07-10 15:20
< >
分享
最佳答案
0

依赖注入 IHostingEnvironment env ,然后试试下面的路径

var filepath = $@"{env.ContentRootPath}/{web文件夹名称}/Resource/System/{fileGuid}/";
收获园豆:3
dudu | 高人七级 |园豆:30994 | 2019-07-10 16:02

此方法有效!

gyangjing | 园豆:4 (初学一级) | 2019-07-11 13:24

假设我要把文件放在 /usr/local/nginx/html/doc 目录下 但是我的站点没在这个目录
那么怎么写呢@dudu

程序员编程日记 | 园豆:6 (初学一级) | 2022-03-08 15:30
其他回答(2)
0

Environment.CurrentDirectory 获取的是执行 dotnet 命令时所在的目录, 如果有使用守护进程,一定要将工作路径设置为程序文件所在的目录。

收获园豆:2
ohyex | 园豆:1496 (小虾三级) | 2019-07-10 17:35

这个怎么操作呢?给个例子看看呗?

支持(0) 反对(0) gyangjing | 园豆:4 (初学一级) | 2019-07-11 08:46

@gyangjing: 使用的是surpervisor的话,就是只要指定directory = xxx就好了。

[program:demo]
command=/usr/bin/dotnet  xxx.dll ;  你的程序dll
directory=/xxx/xxxx/publish ;  指定的程序所在工作目录
.....
支持(1) 反对(0) ohyex | 园豆:1496 (小虾三级) | 2019-07-11 09:30

@hellotim: 看来你是Linux高手

支持(0) 反对(0) gyangjing | 园豆:4 (初学一级) | 2019-07-12 09:35
0

请使用Path.Combie

nywd | 园豆:208 (菜鸟二级) | 2019-07-10 18:34

.net core 用这个也可以么?没试过呢?

支持(0) 反对(0) gyangjing | 园豆:4 (初学一级) | 2019-07-12 09:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册