angular - 如何使用 ASP.NET Web API 将文件列表返回到 Angular 应用程序
问题描述
我做了一些研究,我很困惑。我的文件(图像和视频)存储在我的 Web API 项目目录中名为“资源/课程媒体”的文件夹中,这些文件的路径存储在 SQL Server 数据库中。我需要返回课程数据和要在 Angular 应用程序中显示的媒体文件列表。
这是 Course DTO 类,它应包含 Angular 请求所需的所有数据
public class CoursesDTO
{
public int Id { get; set; }
public string CourseNumber { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string TargetGroup { get; set; }
public string Duration { get; set; }
public decimal Price { get; set; }
public string PartNumber { get; set; }
//LIST OF MEDIA FILES
}
这是我用来接收上传的课程数据和文件并将其存储在数据库和本地文件夹中的代码。
public class CoursesBL
{
private Context _context;
public CoursesBL(Context context) => _context = context;
public void Create(IFormCollection form)
{
try
{
Course course = new Course()
{
Name = form["name"],
CourseNumber = form["courseNumber"],
Description = form["description"],
Duration = form["duration"],
Price = Decimal.Parse(form["price"]),
PartNumber = form["partNumber"],
TargetGroup = form["targetGroup"]
};
_context.Courses.Add(course);
foreach (var file in form.Files)
{
var folderName = Path.Combine("Resources", "Course Media");
var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);
if (file.Length > 0)
{
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.ToString().Trim('"');
var fullPath = Path.Combine(pathToSave, fileName);
var dbPath = Path.Combine(folderName, fileName);
using (var stream = new FileStream(fullPath, FileMode.Create))
{
file.CopyTo(stream);
}
_context.CourseMedia.Add(new CourseMedium
{
FileName = dbPath,
Title = file.Name,
Course = course
});
}
else
{
throw new Exception("BadRequest");
}
}
_context.SaveChanges();
}
catch (Exception e)
{
throw e;
}
}
}
任何帮助将不胜感激。
解决方案
您只能请求获取一个文件,因为 HTTP 响应最多可以包含 1 个内容。
为了解决您的问题,您可以做的是 - 返回文件路径,对于每个文件,您可以提出单独的请求以获取内容响应以显示在 Angular 应用程序中。
推荐阅读
- questdb - 我可以同时从多个客户端写入同一个 QuestDB 表吗?
- android - 如何增加 Html.fromHtml 中的字体大小?
- sql - 我想使用 DATEDIFF 将两个日期之间的差异转换为整数
- angular - 如何过滤 FormGroup 值?
- vtk - VTK:无法使用多线程渲染窗口
- sass - Angular - 显示字体真棒微调中心不起作用
- r - 如何在 R 中使用 TableGrob 以双向表格图形方式突出显示条件值?
- kotlin - ViewPager2 和 FragmentStatePagerAdapter
- typescript - Typescript 不会在扩展接口中推断值的类型
- python - 什么错误“没有显示名称和没有 $DISPLAY 环境变量”