ASP.NET Core
A set of technologies in the .NET Framework for building web applications and XML web services.
4,400 questions
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
I am trying to upload audio mp3 files to postgresql db , they get uploaded but I can't play them neither download them
using System;
using System.Collections.Generic;
namespace SupaCrud.Models;
public partial class Questionsad
{
public int Sno { get; set; }
public int No { get; set; }
public string? Topic { get; set; }
public string? QuestionTitle { get; set; }
public string? Opt1 { get; set; }
public string? Opt2 { get; set; }
public string? Opt3 { get; set; }
public string? Opt4 { get; set; }
public string? Answer { get; set; }
public int? Time { get; set; }
public int? Correct { get; set; }
public string? Solution { get; set; }
public byte[]? Audiodata { get; set; }
}
@model SupaCrud.Models.Questionsad
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>Questionsad</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create" enctype="multipart/form-data">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="No" class="control-label"></label>
<input asp-for="No" class="form-control" />
<span asp-validation-for="No" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Topic" class="control-label"></label>
<input asp-for="Topic" class="form-control" />
<span asp-validation-for="Topic" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="QuestionTitle" class="control-label"></label>
<input asp-for="QuestionTitle" class="form-control" />
<span asp-validation-for="QuestionTitle" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Opt1" class="control-label"></label>
<input asp-for="Opt1" class="form-control" />
<span asp-validation-for="Opt1" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Opt2" class="control-label"></label>
<input asp-for="Opt2" class="form-control" />
<span asp-validation-for="Opt2" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Opt3" class="control-label"></label>
<input asp-for="Opt3" class="form-control" />
<span asp-validation-for="Opt3" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Opt4" class="control-label"></label>
<input asp-for="Opt4" class="form-control" />
<span asp-validation-for="Opt4" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Answer" class="control-label"></label>
<input asp-for="Answer" class="form-control" />
<span asp-validation-for="Answer" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Time" class="control-label"></label>
<input asp-for="Time" class="form-control" />
<span asp-validation-for="Time" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Correct" class="control-label"></label>
<input asp-for="Correct" class="form-control" />
<span asp-validation-for="Correct" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Solution" class="control-label"></label>
<input asp-for="Solution" class="form-control" />
<span asp-validation-for="Solution" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Audiodata" class="control-label"></label>
<input name="Audiodata" type="file" class="form-control" />
<span asp-validation-for="Audiodata" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
public IActionResult SampleVideoStream(int id)
{
var data = _context.Questionsads.Find(id);
return File(data.Audiodata, "audio/mp3");
}
// POST: Questionsads/Create
// To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Sno,No,Topic,QuestionTitle,Opt1,Opt2,Opt3,Opt4,Answer,Time,Correct,Solution,Audiodata")] Questionsad questionsad , [FromForm] IFormFile Audiodata)
{
using (var dataStream = new MemoryStream())
{
await Audiodata.CopyToAsync(dataStream);
questionsad.Audiodata = dataStream.ToArray();
if (ModelState.IsValid)
{
_context.Add(questionsad );
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(questionsad);
}
}
@model IEnumerable<SupaCrud.Models.Questionsad>
@{
ViewData["Title"] = "Index";
}
<h1>Index</h1>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.No)
</th>
<th>
@Html.DisplayNameFor(model => model.Topic)
</th>
<th>
@Html.DisplayNameFor(model => model.QuestionTitle)
</th>
<th>
@Html.DisplayNameFor(model => model.Opt1)
</th>
<th>
@Html.DisplayNameFor(model => model.Opt2)
</th>
<th>
@Html.DisplayNameFor(model => model.Opt3)
</th>
<th>
@Html.DisplayNameFor(model => model.Opt4)
</th>
<th>
@Html.DisplayNameFor(model => model.Answer)
</th>
<th>
@Html.DisplayNameFor(model => model.Time)
</th>
<th>
@Html.DisplayNameFor(model => model.Correct)
</th>
<th>
@Html.DisplayNameFor(model => model.Solution)
</th>
<th>
@Html.DisplayNameFor(model => model.Audiodata)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.No)
</td>
<td>
@Html.DisplayFor(modelItem => item.Topic)
</td>
<td>
@Html.DisplayFor(modelItem => item.QuestionTitle)
</td>
<td>
@Html.DisplayFor(modelItem => item.Opt1)
</td>
<td>
@Html.DisplayFor(modelItem => item.Opt2)
</td>
<td>
@Html.DisplayFor(modelItem => item.Opt3)
</td>
<td>
@Html.DisplayFor(modelItem => item.Opt4)
</td>
<td>
@Html.DisplayFor(modelItem => item.Answer)
</td>
<td>
@Html.DisplayFor(modelItem => item.Time)
</td>
<td>
@Html.DisplayFor(modelItem => item.Correct)
</td>
<td>
@Html.DisplayFor(modelItem => item.Solution)
</td>
<td>
<audio autoplay controls src="/Home/SampleVideoStream?id=@item.No" type='audio/mp3'></audio>
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.Sno">Edit</a> |
<a asp-action="Details" asp-route-id="@item.Sno">Details</a> |
<a asp-action="Delete" asp-route-id="@item.Sno">Delete</a>
</td>
</tr>
}
</tbody>
</table>
Please identify where the cause exists:
(1) Uploading mp3 file from client,
(2) Receiving the uploaded mp3 file at action method in server,
(3) Storing the received mp3 file to PostgreSQL,
(4) Obtaining the mp3 file from PostgreSQL according to request from client,
(5) Downloading the mp3 file to client, or
(6) Playing the downloaded mp3 file at client.