不使用Ajax下载文件

詹姆士

我试图按照此示例显示进度条,而不使用ajax下载文件。

我使用淘汰赛,HTML和WebAPI。我有下面的代码,它在按钮的click事件上调用href

this.getMeData= function () {

    uRlPath("/api/GetSomeData?id=" + 12)
                + "&name=" + getName.toString()
                + "&downloadtoken=" + new Date().getTime());

    $('#myLink').click();

    location.href = $('#myLink').attr('href');


    };

这是我的HTML

   <tr>
            <td class="labelText">
                <button data-bind="click: getMeData">
                   Download Data
                </button>

            </td>
        </tr>
        <tr>
            <td>
               <a id="myLink" data-bind="attr: { href: uRlPath }" style="visibility: hidden">Open </a>
            </td>
        </tr>

我现在想在href的click事件上调用一些函数

这是我的webapi方法,它向我返回cookie和二进制文件

 public HttpResponseMessage GetSomeData(int id, string name, string downloadtoken)
    {
      var returnData= new HttpResponseMessage(HttpStatusCode.OK);
      returnData.Content = new ByteArrayContent(mybyteArray);
       var cookie = new CookieHeaderValue("downloadtoken", downloadtoken);
        returnData.Headers.AddCookies(new CookieHeaderValue[] { cookie });
      returnData.Content.Headers.ContentDisposition =
            new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
        returnData.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");


        returnData.Content.Headers.ContentDisposition.FileName = "myfile.pdf";
        return returnData;
    }

确切地说,我希望具有与示例中提供的行为相同的行为。例如,他们使用表格提交,但是我没有任何表格,因为我只使用html,knockout。我已包含示例中提到的所有库。

如果您需要更多输入,请告诉我。

詹姆士

我自己找到了解决方案。我用下面的代码不断检查cookie

var attempts = 30;
var checkTime

        startProgressBar(true)

        checkTime= window.setInterval(function () {

            var cookieValue = $.cookie('downloadtoken');

            if ((cookieValue == token) || (attempts == 0)){
                 stopDownload();
            }
            attempts --;
        }, 1000);

finishDownload功能中,我清除cookie并停止进度栏

 function stopDownload() {
        window.clearInterval(checkTime);
        $.cookie('downloadtoken', null); //clears this cookie value
        stopProgressBar(false);
    }

这是进度条的html代码

 <div  data-bind="visible: stopProgressBar" style="top:248px;left: 320px;">
    <img src="../images/ProgressBar.jpg"  />
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Ajax和iframe下载文件

来自分类Dev

使用Blob从Ajax结果下载文件

来自分类Dev

如何使用VBA下载文件(不使用Internet Explorer)

来自分类Dev

为什么不使用Node.js下载文件?

来自分类Dev

github-api:访问/下载文件(不使用`getArchive`)

来自分类Dev

不使用 JSch 从 SFTP 服务器下载文件

来自分类Dev

通过Ajax下载文件

来自分类Dev

如何在不使用html中的下载标签的情况下创建可下载文件?

来自分类Dev

从Spring Service使用AJAX GET下载文件

来自分类Dev

使用Guzzle和Ajax从Dropbox下载文件

来自分类Dev

如何使用laravel响应以ajax成功下载文件

来自分类Dev

使用Ajax调用MVC从数据库下载文件

来自分类Dev

使用<iframe>和AJAX下载文件时出现404

来自分类Dev

使用AJAX调用在javascript中下载文件

来自分类Dev

不使用中间文件直接从 SFTP 下载文件到 HTTP 响应

来自分类Dev

使用cherrypy下载文件

来自分类Dev

使用AsyncTask下载文件

来自分类Dev

使用Django下载文件

来自分类Dev

使用webapi下载文件

来自分类Dev

使用卷曲下载文件

来自分类Dev

使用ClosedXML下载文件

来自分类Dev

使用AngularJS下载文件

来自分类Dev

使用FileSaver下载文件

来自分类Dev

使用fastapi下载文件

来自分类Dev

使用Micronaut下载文件

来自分类Dev

使用卷曲下载文件

来自分类Dev

使用JSF下载文件

来自分类Dev

使用ftp下载文件

来自分类Dev

使用脚本下载文件