В настоящее время я создаю веб-приложение, которое должно воспроизводить звуковые файлы.Первая проблема, с которой я столкнулся, заключается в том, что при записи аудиофайлов в базу данных все записи имеют одинаковое значение, даже если они являются разными аудиофайлами, база данных с аудиофайлами
I 'Я не уверен, хорошо ли это сохранилось, но я хотел сделать это так же, как с фотографиями
Mp3 mp3 = new Mp3();
using (var memoryStream = new MemoryStream())
{
await createViewModel.Name_mp3.CopyToAsync(memoryStream);
mp3.Name_mp3 = memoryStream.ToArray();
}
_context.Mp3.Add(mp3);
_context.SaveChanges();
Пожалуйста, подскажите, как это должно выглядеть
Второй вопрос - как извлечь эти аудиофайлы из базы данных.Я также попробовал способ извлечения изображений из базы данных.
Так что мой взгляд выглядит следующим образом
@model IEnumerable<inz.Models.Song>
@{
ViewData["Title"] = "Index";
}
<div class="panelDiv textColor">
<form asp-controller="Songs" asp-action="Index" method="get">
<div class="input-group w-50 m-4 mx-auto">
<input type="text" class="form-control input-lg border-danger searchBorder" placeholder="Wyszukaj utwór lub artyste" name="search" />
<span class="input-group-btn">
<button class="btn btn-danger" type="submit">
<i class="fas fa-search"></i>
</button>
</span>
<div class="dropdown w-0">
<button class="btn btn-danger dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>
<div class="dropdown-menu bg-danger" aria-labelledby="dropdownMenuButton">
<input type="submit" name="all" value="Wyświetl wszystko" class="btn btn-danger" />
</div>
</div>
</div>
</form>
<div class="text-center m-5">
<a asp-action=Create>
<buton class="textColor btnDiv">
Dodaj nowy utwór <i class="fas fa-plus-circle fa-lg"></i>
</buton>
</a>
</div>
@if (ViewBag.ShowList == true)
{
<div class="table-responsive">
<table class="table tableSong">
<thead class="bg-danger table-borderless">
<tr>
<th>
</th>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.Album.Name_Album)
</th>
<th>
@Html.DisplayNameFor(model => model.Artist.Name_Artist)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<i class="fas fa-thumbs-up"></i>
<i class="fas fa-thumbs-down"></i>
</td>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@if (item.Album.Name_Album != null)
{
<a asp-controller="Songs" asp-action="Album" asp-route-nameAlbum="@item.Album.Name_Album" class="link">@Html.DisplayFor(modelItem => item.Album.Name_Album)</a>
}
else
{
<span>Brak informacji</span>
}
</td>
<td>
<a asp-controller="Songs" asp-action="Artist" asp-route-name="@item.Artist.Name_Artist" class="link">@Html.DisplayFor(modelItem => item.Artist.Name_Artist)</a>
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.ID_Song">
<buton class="textColor btnIndex">Edytuj</buton>
</a>
<a asp-action="Details" asp-route-id="@item.ID_Song">
<buton class="textColor btnIndex">Detale</buton>
</a>
@if (User.IsInRole("Admin"))
{
<a asp-action="Delete" asp-route-id="@item.ID_Song">
<buton class="textColor btnIndex">Usuń</buton>
</a>
}
</td>
**<td>
@{
var base64 = Convert.ToBase64String(item.Mp3.Name_mp3);
var imgSrc = String.Format("data:audio/mp3;base64,{0}", base64);
}
<audio controls>
<source src="@imgSrc" type="audio/ogg" />
</audio>
</td>**
</tr>
}
</tbody>
</table>
</div>
}
else
{
<p class="mt-5"> Brak zawartości do wyświetlenia</p>
}
</div>
Но у меня все еще есть ошибка
Я добавлю, как выглядят мои модели
public class Mp3
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID_Mp3 { get; set; }
public byte[] Name_mp3 { get; set; }
}
и
public class CreateViewModel
{
public int ID_Song { get; set; }
[Required(ErrorMessage = "Proszę wpisać tytuł")]
[Display(Name = "Tytuł")]
public string Title { get; set; }
[Required(ErrorMessage = "Proszę wpisać nazwę artysty")]
[Display(Name = "Artysta")]
public string Name_Artist { get; set; }
[Display(Name = "Album")]
public string Name_Album { get; set; }
[Display(Name = "Producent")]
public string Name_Producer { get; set; }
public IFormFile Name_mp3 { get; set; }
}
Я прошу подсказки и прошу прощения за мой английский