public async Task <dynamic> OnGetHomeworkFileAsync(int hwID, int fileID, string token, bool mode) { try { var t = await tokenService.GetTokenAsync(token); if (t == null) { throw new Exception("请先登录"); } if (t.Role != UserRole.Admin) { if (!await homeworkService.CheckInCourse(t.UserID, hwID)) { throw new Exception("权限不足"); } } var fileInfo = await fileService.GetFileAsync(fileID); new FileExtensionContentTypeProvider().TryGetContentType(fileInfo.Name, out var contentType); if (mode) { var arr = Encoding.UTF8.GetBytes(fileInfo.Name); var name = string.Empty; foreach (var b in arr) { name += string.Format("%{0:X2}", b); } HttpContext.Response.Headers.Add("Content-Disposition", new Microsoft.Extensions.Primitives.StringValues("attachment; filename = " + name)); } return(PhysicalFile(Path.GetFullPath(fileInfo.Path), contentType)); } catch (Exception e) { return(new { Res = false, Error = e.Message }); } }