Как воспроизвести mp3-файл в проекте MVC, используя JavaScript? - PullRequest
0 голосов
/ 11 мая 2019

Я бы посмотрел на подобные темы. Но я не понимаю.Существует более одного проекта в решении MVC.Я хотел бы воспроизвести аудиофайл с использованием javascript в cshtml в проекте «Ваучер». Этот файл находится в папке «содержимое» в «основном» проекте.Я могу относиться к проектам на уровне контроллера. Но у меня была проблема с уровнем просмотра.

<script>
var audio = new Audio();
audio.src = ""; // I could not add the path of the file.
audio.play();
</script>

Я пробовал так:

audio.src = "@Server.MapPath("~/Content/sounds/beep.wav")";

Я такжепопробовал использовать html5.Но опять же я не смог получить доступ к другому проекту в "src".Я попытался преобразовать аудиофайл в байт на части контроллера.Но у меня не было полезного результата.

Ответы [ 2 ]

2 голосов
/ 11 мая 2019

Вы можете обслужить так:

    [HttpGet]
        public ActionResult GetAudioFile(string filename)
        {
string filePath = Server.MapPath(Url.Content($"~/Content/sounds/{filename}"));
            var bytes = new byte[0];


            using (var fs = new FileStream(filePath , FileMode.Open, FileAccess.Read)
            {
                var br = new BinaryReader(fs);
                long numBytes = new FileInfo(fileLocation).Length;
                buff = br.ReadBytes((int)numBytes);
            }

            return File(buff, "audio/mpeg", "file.mp3");
        }

А затем в вашем коде сценария Java:

function Sound(source, volume, loop)
{
    this.source = source;
    this.volume = volume;
    this.loop = loop;
    var son;
    this.son = son;
    this.finish = false;
    this.stop = function()
    {
        document.body.removeChild(this.son);
    }
    this.start = function()
    {
        if (this.finish) return false;
        this.son = document.createElement("embed");
        this.son.setAttribute("src", this.source);
        this.son.setAttribute("hidden", "true");
        this.son.setAttribute("volume", this.volume);
        this.son.setAttribute("autostart", "true");
        this.son.setAttribute("loop", this.loop);
        document.body.appendChild(this.son);
    }
    this.remove=function()
    {
        document.body.removeChild(this.son);
        this.finish = true;
    }
    this.init = function(volume, loop)
    {
        this.finish = false;
        this.volume = volume;
        this.loop = loop;
    }
}

Также используется следующим образом:

var url= 'ControllerName/GetAudioFile?filename=yourfilename '
var foo = new Sound("url", 100, true);
foo.start();
foo.stop();
foo.start();
foo.init(100, false);
0 голосов
/ 12 мая 2019

я попробовал следующий код:

<script>
    $(document).ready(function () {
var url = "@Url.Content("~/Content/sounds/notificationSound.mp3")";
    new Audio(url).play();
}</script>

Код работал, когда я обновляю страницу. Затем я нажал Ctrl + F5. Но на этот раз не сработало. Сообщение об ошибке отображается на экране. Сообщение об ошибке:

Uncaught (в обещании) DOMException

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...