0

apiapicontrollerからクライアント側でファイルをダウンロードしたい:

 public HttpResponseMessage PostOfficeSupplies()
 {
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    result.Content = new StreamContent(File.OpenRead("D:\\Others\\Images\\file.png"));
    result.Content.Headers.ContentType = new MediaTypeHeaderValue     ("application/octet-stream");

    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    result.Content.Headers.ContentDisposition.FileName = "file.png";
    return result;    
}

ダウンロードをポップアップするjqueryを使用したクライアント側のコード(ビュー)はどうですか?

私のクライアント側:

                 $.ajax(
                    {
                        url: 'api/MyAPI'
                    , type: "post"
                    , contentType: "application/octet-stream"
                    , data: ''
                    , success:
                    function (retData) {
                        $("body").append("<iframe src='" + retData + "' style='display: block;' ></iframe>");
                                        $("#sp123").text(retData);}

                    });       

ダウンロードをポップアップしたいだけです

4

1 に答える 1

0

ajax呼び出しを使用してダウンロードポップアップを表示できるかどうかはわかりませんが、フォームを送信することでダウンロード確認ウィンドウを表示できます

<form id="downloadForm" method="post" action="~/api/MyAPI">
 <!--use this if you want to pass any values !-->
 <!--  <input type="hidden" name="Param1" id="Param1HidenValue" /> !-->
</form>

そしてJavaScriptからそれをこのように呼びます

$('#downloadForm').submit();
于 2012-11-29T07:49:53.747 に答える