首页 .NET/Web OSS上传文件需要绝对路径的.NETCore的解决方案

OSS上传文件需要绝对路径的.NETCore的解决方案

作者:胡同里的砖头 围观群众:268 更新于:2021-11-21

因为OSS上传需要全路径,折了一天,都没有办法获取,获取的都是项目目录下面的路径,这样上传因为路径错误而传不了

于是换了一种思维,先把文件上传到服务器目录下,因为他读的都是服务器的目录,再直接把服务器的目录绝对路径带入即可

private IHostingEnvironment _hostingEnvironment;

public WinController(IHostingEnvironment environment)
{
_hostingEnvironment = environment;
}

[HttpPost("upload")]
public async Task<IActionResult> upload()
{
IFormFile iff = HttpContext.Request.Form.Files[0];//获取上传的文件

string ext = iff.FileName.Substring(iff.FileName.LastIndexOf('.'));//获取后缀
var uploads = Path.Combine(_hostingEnvironment.WebRootPath, "file/upload");//上传到服务器的路径下面file文件夹下面一个upload文件夹下面
var filePath = Path.Combine(uploads, "1"+ ext);//因为我不需要本地备份,直接上传到OSS即可,所以这里我只要是上传的文件,都给1.xx命名,这样不占服务器空间

try
{
string msg="";

using (FileStream fs = System.IO.File.Create(filePath))
{
await iff.CopyToAsync(fs);//异步copy至服务器目录下面
fs.Flush();
}


string osspath = string.Format("{0}/{1}{2}", DateTime.Now.Year, Guid.NewGuid().ToString(), ext);//定义OSS路径
//以下上传方式不懂的可以看https://bysjdq.com/zhishi/752
bool success = OSSHelper.PutObject("xxxx", "xxx", "xxxx", "xxxx", osspath, filePath, ref msg);//此时把上传的服务器文件绝对路径带入即可filePath
msg = success ? "上传成功!" : msg;
var result = new
{
code=Convert.ToInt32(success),
success,
msg,
url = osspath
};
return Ok(result);
}
catch (Exception ex)
{
var result = new
{
code=1,
success=false,
msg=ex.Message
};
return Ok(result);
}
}

  • 本文标题: OSS上传文件需要绝对路径的.NETCore的解决方案
  • 文章分类:【.NET/Web】
  • 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.
留言评论
站点声明:
1、本站【胡同里的砖头】个人博客,借鉴网上一些博客模板,取其各优点模块自行拼装开发,本博客开发纯属个人爱好。
2、所有笔记提供给广大用户交流使用,可转载,可复制,纯个人开发所遇问题锦集记录使用
Copyright © huzlblog.com All Rights Reserved. 备案号:苏ICP备2021056683号-8