3

私はasp.netアプリケーションに取り組んでおり、ビューからコントローラーアクションを呼び出しています。このビューは、呼び出された関数に mp3 を返す必要があります。Actionresult のタイプは何になりますか。呼び出されている関数は mp3 レスポンスを返します。メモリ内の api によって返されたメモリ内の mp3 応答を保持し、ビューに戻る方法は?

ここに私のコントローラーメソッドコードがあります:

 public ActionResult getrecording()
        {
            byte[] file = new byte[100]; // Convert.ToByte("https://api.abc.com/api/v2/GetRecording?access_token=dfsdfsdfsdfsdfsdfsdfsdfsfsfdsf");


            //return (new FileStreamResult(fileStream, "audio/mpeg"));
            ////return (new FileContentResult(data, "audio/mpeg"));
        }

ここにビューコードがあります

 $("#jquery_jplayer_1").jPlayer({
                ready: function (event) {
                    $(this).jPlayer("setMedia", {
                          mp3: "/recording/getrecording" 
                    });
                },
                swfPath: "../../Content/JPlayer/js",
                supplied: "mp3",
                wmode: "window",
                size: 100,
                duration: "#duration"
            });
4

1 に答える 1

4

WebClient を使用してリモート ファイルをダウンロードし、それを応答にストリーミングできます。

public ActionResult getrecording()
{
    var client = new WebClient();
    var stream = client.OpenRead("https://api.abc.com/api/v2/GetRecording?access_token=dfsdfsdfsdfsdfsdfsdfsdfsfsfdsf");
    return File(stream, "audio/mpeg");
}

クライアントにファイルをダウンロードするように促したい場合は、単に名前を追加してください:

public ActionResult getrecording()
{
    var client = new WebClient();
    var stream = client.OpenRead("https://api.abc.com/api/v2/GetRecording?access_token=dfsdfsdfsdfsdfsdfsdfsdfsfsfdsf");
    return File(stream, "audio/mpeg", "foo.mp3");
}
于 2013-03-14T12:40:05.590 に答える