当前位置:Gxlcms >
数据库问题 >
[实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2
[实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2
时间:2021-07-01 10:21:17
帮助过:1人阅读
<summary>
/// 文件下载
/// </summary>
/// <param name="fileId"></param>
public void DownLoadFile(
string fileId)
{
UserInfo userInfo = Session[
"user"]
as UserInfo;
if (userInfo ==
null)
{
RedirectToAction("Login",
"UserInfo");
return;
}
if (
string.IsNullOrEmpty(fileId))
{
throw new ArgumentNullException(
"fileId is errror");
}
int id =
Convert.ToInt32(fileId);
var findFile = _myFileServiceRepository.Find(x => x.Id ==
id);
if (findFile ==
null)
{
AlertMsg("文件不存在",
"");
return;
}
string filePath = Path.Combine(Server.MapPath(
"~/NetDisk/"), findFile.FileMd5 +
findFile.FileExt);
//以字符流的形式下载文件
FileStream fs =
new FileStream(filePath, FileMode.Open);
byte[] bytes =
new byte[(
int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType =
"application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader(
"Content-Disposition",
"attachment; filename=" +
HttpUtility.UrlEncode(findFile.FileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
总结
下载的逻辑也很好修改,只是修改一下文件的路径,在数据库中已经存有md5和文件的扩展名,这时候拼接一个文件的真实路径就可以了。
[实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2
标签: